【发布时间】:2018-07-31 12:53:32
【问题描述】:
遵循 Stack Overflow 帖子:Angular RxJS When Should I Unsubscribe From Subscription 中描述的最佳实践,考虑这个 Angular 组件生命周期挂钩:
private ngUnsubscribe: Subject<void> = new Subject();
ngOnInit() {
this.fireAuth.authState
.takeUntil(this.ngUnsubscribe)
.mergeMap((user) => this.todoService.getUserTodos(user.uid))
.takeUntil(this.ngUnsubscribe)
.subscribe((todos) => this.userTodoArray = todos);
}
ngOnDestroy() {
this.ngUnsubscribe.next();
this.ngUnsubscribe.complete();
}
authState() 和 mergeMap() 都返回 Observables,我想我也应该这样做
- 同时取消订阅(如上所示)或
- 仅调用
takeUntil()运算符之一,可以从外部 ObservableauthState()或内部 Observablethis.todoService.getUserTodos(user.uid)调用。
在组件销毁后,确保所有 Observables 都被取消订阅的正确方法是什么?
【问题讨论】:
-
第 2 个:您只需要
takeUntil运算符之一,删除哪一个都没关系。 -
感谢您的回复。关于为什么#2是正确的任何解释或参考?
-
无论您使用哪一个,都会看到流完成并且 observables 被取消订阅。如果没有其他人提供详细解释,我可能会在稍后添加答案。
-
好的,没问题。欣赏!
-
我回来回答这个问题,意识到我的 cmets 错了。您选择删除哪个很可能很重要,因为行为不同。
标签: angular rxjs observable angularfire2