【发布时间】:2017-10-19 20:12:02
【问题描述】:
如何最好地使用 takeUntil 取消订阅 observable。
据我了解 takeUntil 会自动为您完成。
以下是我通常如何取消订阅 observable。 但不确定是否正确完成。我真的需要“this.destroyed$.complete();”吗?如果 takeUntil 为我完成了吗?
这是我目前的尝试,但不确定是否是最佳方法:
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,但不确定这是否会导致内存泄漏?
【问题讨论】:
-
你检查过这个链接吗:stackoverflow.com/questions/38008334/…?*
-
那个链接有很多例子,如果我做得对,我真的想要一个答案?谢谢你的链接
-
只需阅读验证答案:--- 编辑 3 - “官方”解决方案 (2017/04/09)。这是最好的方法,由来自 Angular 的团队成员验证
-
Wandrille,我也读过你提到的那一点,看来我上面的解决方案是正确的。你同意吗?
-
是的,这是个好办法。