Добрый день!
Подскажите, пожалуйста, как решить такую задачу. Также просьба посоветуйте руководства по RxJS с простыми примерами.
- Проект разрабатываю на Angular 7.0.4 и rxjs 6.3.3
- на странице есть две подписки на два interval.
1-й: interval(10000); внутри subscribe этого interval отрабатывают http-запросы.
2-й: interval(1000); этот интервал изменяет переменную second_to_event на -1. При выполнении условия second_to_event == 0, нужно:
- приостановить эту подписку
- выполнить http-запрос
- в случае успешного выполнения http-запрос, сбросить переменную second_to_event, запустить подписку
Через google нашел, что для этого используют
switchMap:
вот пример. Но в этом примере Observable создается на событие, а в моем случае, как я понимаю, нужно сделать Observable на условие.
Вот код, который у меня сейчас есть:
export class GameComponent implements OnInit, OnDestroy {
reloadGameInfo = interval(10000);
reloadGameInfoSubscription: Subscription;
stepTimer = interval(1000);
stepTimerSubscription: Subscription;
ngOnInit(){
this.reloadGameInfoSubscription = this.reloadGameInfo.subscribe(() => {
this.gameService.getInfoGame(this.current_game.auth_key)
.subscribe((response: Game) => {
if (this.current_game.status_id == gameStatusCode.two_player_in_game) {
if (!this.stepTimerSubscription) {
this.stepTimerSubscription = this.stepTimer.subscribe(() => {
if (--this.current_game.seconds_for_step == 0) {
this.stepTimerSubscription.unsubscribe();
}
});
}
}
});
});
}
}