RxJS迁移5到6 - 取消订阅TakeUntil

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RxJS迁移5到6 - 取消订阅TakeUntil相关的知识,希望对你有一定的参考价值。

在RxJS 6中取消订阅的最佳方法是什么?

我的'旧'RxJS 5代码看起来如此

export class MyComponent implements OnInit, OnDestroy {
  private ngUnsubscribe: Subject<any> = new Subject();

  this.myService.myEventEmitter
    .takeUntil(this.ngUnsubscribe)
    .subscribe(this.onDataPolling.bind(this));

  public ngOnDestroy(): void {
    this.ngUnsubscribe.next();
    this.ngUnsubscribe.complete();
  }
}

在迁移到RxJS 6时,我运行rxjs-5-to-6-migrate并得到了

this.myService.myEventEmitter.pipe(
  takeUntil(this.ngUnsubscribe))
  .subscribe(this.onDataPolling.bind(this));

但这不起作用,因为EventEmitter没有管道方法。

在RxJS 6中取消订阅的最佳方法是什么?

编辑:这在干净安装后确实有效,是在RxJS 6中取消订阅的最佳方式。

答案
import { takeUntil } from 'rxjs/operators';

.pipe(takeUntil(this.destroyed$)).subscribe({YOUR_CODE})

这应该有所帮助。

另一答案
this.ngUnsubscribe.complete();

this.ngUnsubscribe.unsubscribe();

以上是关于RxJS迁移5到6 - 取消订阅TakeUntil的主要内容,如果未能解决你的问题,请参考以下文章

Angular + RxJS:使用 takeUntil 与简单取消订阅?

Angular RxJS Observable:takeUntil 与使用订阅取消订阅 [关闭]

使用 takeUntil 和 combineLatest 取消订阅可观察的 rxjs 不起作用

订阅/取消订阅 VS 创建/TakeUntil?

为 takeUntil 运算符提供的杀死 observable 的更好方法是啥,为啥?

如何在 Angular 应用程序中检测与 rxjs 相关的内存泄漏