Как остановить интервал таймера? - PullRequest
0 голосов
/ 17 марта 2019

Как остановить интервал при переходе к другому компоненту в Angular 7:

public s: Observable<any>;

this.s = interval(5000)
      .pipe(takeWhile(() => this.visitors.length > 0))
      .subscribe(() => {});

Я пытался остановить интервал в деструкторе компонента:

   ngOnDestroy() {
      this.s.unsubscribe();
  }

1 Ответ

2 голосов
/ 17 марта 2019

Вы сделали 2 ошибки; позвольте мне описать их:

  • Вызов функции subscribe() не возвращает Observable; pipe возвращается.
  • Использование unsubscribe не остановит интервал.

Я использую setInterval вместо интервала, например:

timer: any;

ngOnInit() {
    this.timer = setInterval(() => {
        // here do whatever you want every 5 seconds
    }, 5000);
}

И использовать clearInterval function onDestroy; как:

ngOnDestroy() {
    clearInterval(this.timer);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...