我已在我的服务中建立了一个可观察对象,以便每2秒轮询一次来自API的更新;可观察对象仍然存在,但是当我移动页面或致电要求其他结果时,我需要销毁它。
任何人都可以在页面退出时或作为手动请求(例如,从对API的另一个调用中)帮助销毁可观察对象吗?
return Observable.interval(2000).switchMap(() => {
return super.doRequest('/audit/api/' + this.API_version + '/Query/GetFlowHistory?sagaId=' + sagaId, 'get', {}).map((responseData) => {
return responseData
}); })
答案 0 :(得分:1)
您可以从RxJS使用takeUntil
。 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();
}
}