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

Mig*_*ura 2 rxjs typescript angular angular10

我有以下观察结果:

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

this.user$ -> Observable<UserModel>
Run Code Online (Sandbox Code Playgroud)

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

zip(this.authenticationService.isSignedIn(), this.user$).pipe(
  map(([isSignedIn, user]: [boolean, UserModel]) => isSignedIn && user.claims))
); 
Run Code Online (Sandbox Code Playgroud)

因为我得到了意想不到的结果,所以我尝试使用以下方法检查内容:

zip(this.authenticationService.isSignedIn(), this.user$).pipe(
  tap(([isSignedIn, user]: [boolean, UserModel]) => {
    console.log(isSignedIn);
    console.log(user);
  })
);
Run Code Online (Sandbox Code Playgroud)

但两人console.log并没有被处决。我缺少什么?

And*_*rei 5

您可能会错过订阅。所有 rxjs 的东西都是惰性的,在订阅完成之前不会运行。如果除了运算符之外您不需要以其他方式处理结果tap,只需.subscribe()在最后添加

zip(...).pipe(
  tap(...)
).subscribe();
Run Code Online (Sandbox Code Playgroud)