首页 文章

如何在Angular2中使用takeUntil取消订阅观察

提问于
浏览
-2

如何使用takeUntil取消订阅观察 .

根据我的理解,takeUntil会自动为您完成 .

以下是我通常如何取消订阅观察 . 但不确定是否正确完成 . 我真的需要“this.destroyed $ .complete();”如果takeUntil为我完成了吗?

This is my current attempt that works but unsure if best method:

private destroyed$: Subject<void> = new Subject();

 ngOnIt(): void {
    this.serviceA.getData
      .takeUntil(this.$destroyed)
      .subscribe(val => {
        console.log('Current value:', val);
      });
  };

  ngOnDestroy(): void {
    this.destroyed$.next();
    this.destroyed$.complete();
  };

我想删除ngOnDestory中的.complete,但不确定是否会导致内存泄漏?

1 回答

  • 1

    我个人更喜欢这个解决方案,有另一个主题只是处理取消订阅和混合使用takeUntil可能会使事情太复杂

    private _subscriptions:Subscription[];
    
     ngOnIt(): void {
      this._subscriptions.push(this.serviceA.getData
      .subscribe(val => {
        console.log('Current value:', val);
      })
       )
    };
    
    ngOnDestroy(): void {
    this._subscriptions.foreach(subs=>{ subs.unsubscribe()})
    };
    

相关问题