分享
三行代码  ›  专栏  ›  技术社区  ›  Miguel Moura

控制台.Log在RXJS Tap运算符内部时不执行

  •  0
  • Miguel Moura  · 技术社区  · 1 周前

    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, user]: [boolean, UserModel]) => {
        console.log(isSignedIn);
        console.log(user);
      })
    );
    

    console.log 不执行。我错过了什么?

    1 回复  |  直到 1 周前
        1
  •  1
  •   Andrei    1 周前

    你可能缺少订阅。所有的rxjs都是懒惰的,在订阅完成之前不会运行。如果你不需要处理结果,除了 tap 接线员,加上 .subscribe() 最后

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