何时/如何取消订阅:RxJS和Angular项目中的管理订阅

时间:2017-12-28 06:43:33

标签: angular rxjs

这是我的代码段(示例)

fetchData(): void {
    if (this.subscription$) {
        this.subscription$.unsubscribe();
    }
    this.subscription$ = this.store.select('someEvent')
                                   .subscribe(data => {
                                      console.log(data);
                                   });
}

ngOnDestroy() { 
  this.subscription$.unsubscribe();
}

我需要调用fetchData方法添加另一个订阅以从store获取当前状态。所以在这一点上,我已经像上面那样实现它以释放以前的订阅。它的工作方式我希望它工作,但我觉得代码不是很整洁。我正在深入研究takeUntiltakeWhile以使代码更加Rx,但我没有成功。

1 个答案:

答案 0 :(得分:0)

使用主题发出破坏信号

destroyed$=new Subject()
 fetchData(): void {
this.store.select('someEvent').takeUntil(destroyed$)
                               .subscribe(data => {
                                  console.log(data);
                               });
}

ngOnDestroy() { 
   destroy$.next()
}