将 take(1) 与可观察量一起使用<boolean>?



阅读本文,它使用以下CanActivate检查来查看是否允许用户导航到主页:

canActivate(): Observable<boolean> {
return this.authQuery.isLoggedIn$.pipe(
take(1),
switchMap((isLoggedIn) => {
if (!isLoggedIn) {
this.router.navigate(['/login']);
}
return of(isLoggedIn);
})
);

我想知道take(1)的目的是什么?既然isLoggedIn$Observable<boolean>的一个实例,那么似乎总是只有1可以取?

是的,它只需要一次,就像读取快照一样。

canActivate的这种情况下,如果您需要它,这是一个问题,因为您没有订阅,所以angular将处理释放资源,因为您正在返回observable。所以我不会在这种情况下使用

如果你订阅了take,那么当你不需要它们的时候,你就不再监听它们了

相关内容

最新更新