如何销毁可观察对象

Jon*_*ono 2 rxjs typescript angular

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

alt*_*255 7

您可以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();
  }
}
Run Code Online (Sandbox Code Playgroud)