遵循这篇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 在组件销毁后都已取消订阅?
takeUntil
操作符,而且删除哪一个都无所谓。 - cartant