您不需要同时使用
takeUntil
操作员。您只需要一个,但行为会因您移除的对象而异。
如果只使用第一个
takeUntil公司
,如下所示:
this.fireAuth.authState
.takeUntil(this.ngUnsubscribe)
.mergeMap((user) => this.todoService.getUserTodos(user.uid))
.subscribe((todos) => this.userTodoArray = todos);
什么时候
this.ngUnsubscribe
发出
next
通知
takeUntil公司
将从取消订阅
this.fireAuth.authState
并将完成。如中所述
Observable Contract
,当observable完成时,其订阅者将收到
complete
通知和将自动取消订阅。
但是,如果
下一个
通知是从发出的
这fireAuth。authState公司
以及
getUserTodos
在
mergeMap
尚未完成
合并地图
实施不会从取消订阅
getUserTodos
可观察到。如果
getUserTodos
observable later发出
下一个
通知,通知将传递到
subscribe
.
如果只使用第二个
takeUntil公司
,如下所示:
this.fireAuth.authState
.mergeMap((user) => this.todoService.getUserTodos(user.uid))
.takeUntil(this.ngUnsubscribe)
.subscribe((todos) => this.userTodoArray = todos);
什么时候
这ngUnsubscribe公司
发出
下一个
通知
takeUntil公司
将从取消订阅
合并地图
,将从中取消订阅
这fireAuth。authState公司
从任何返回的
getUserTodos
可观察到。
所以,之后
这ngUnsubscribe公司
发出时,不会有通知流到
订阅
. 这很可能是您正在寻找的行为,因此您应该删除第一个
takeUntil公司
操作人员