如何销毁可观察的物体

时间:2019-02-21 08:43:23

标签: angular typescript rxjs

我已在我的服务中建立了一个可观察对象,以便每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
  }); })

1 个答案:

答案 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();
  }
}