Как уничтожить наблюдаемое

-1

Я установил наблюдаемый в моем сервисе, чтобы запрашивать обновления API каждые 2 секунды; наблюдаемое сохраняется, но мне нужно уничтожить его, когда я перемещаю страницы или вызываю другой результат.

Может ли кто-нибудь помочь в том, как уничтожить наблюдаемое на выходе из страницы или в виде ручного запроса (например, из другого обращения к API)?

return Observable.interval(2000).switchMap(() => {
  return super.doRequest('/audit/api/' + this.API_version + '/Query/GetFlowHistory?sagaId=' + sagaId, 'get', {}).map((responseData) => {

    return responseData
  }); })
Теги:
angular
rxjs

1 ответ

1
Лучший ответ

Вы можете использовать takeUntil из RxJS. takeUntil остановит подписку. Смотрите пример ниже.

class myComponent {
  private destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);

  ngOnInit() {
    return Observable.interval(2000).switchMap(() => {
      return super.doRequest('/audit/api/' + this.API_version + '/Query/GetFlowHistory?sagaId=' + sagaId, 'get', {}).map((responseData) => {
        return responseData
      });
    }).takeUntil(this.destroyed$)
  }

  destroy() {
    this.destroyed$.next(true);
    this.destroyed$.complete();
  }
}
  • 0
    большое предложение большое спасибо! особенно соответствующий пример

Ещё вопросы

Сообщество Overcoder
Наверх
Меню