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 不起作用