Я установил наблюдаемый в моем сервисе, чтобы запрашивать обновления 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
}); })
Вы можете использовать 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();
}
}