在RXJS Tap操作符中时,不会执行Console.Log

问题描述

我有以下观察值:

this.authenticationService.isSignedIn() -> Observable<Boolean>

this.user$ -> Observable<usermodel>

我需要根据两者检查条件,所以我尝试了:

zip(this.authenticationService.isSignedIn(),this.user$).pipe(
  map(([isSignedIn,user]: [boolean,usermodel]) => isSignedIn && user.claims))
); 

由于出现意外结果,我尝试使用以下方法进行检查:

zip(this.authenticationService.isSignedIn(),this.user$).pipe(
  tap(([isSignedIn,usermodel]) => {
    console.log(isSignedIn);
    console.log(user);
  })
);

但是两个console.log未执行。我想念什么?

解决方法

您可能缺少订阅。所有rxjs事情都是懒惰的,除非完成订阅,否则它们将不会运行。如果您除了tap运算符之外不需要其他方式处理结果,只需在末尾添加.subscribe()

zip(...).pipe(
  tap(...)
).subscribe();