Console.Log 在 RXJS Tap 运算符内部时不执行
Console.Log is not executed when inside the RXJS Tap operator
我有以下观察结果:
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
都没有执行。我错过了什么?
您可能缺少订阅。所有 rxjs 的东西都是惰性的,在订阅完成之前不会 运行 。如果除了 tap
运算符之外不需要以其他方式处理结果,只需在末尾添加 .subscribe()
zip(...).pipe(
tap(...)
).subscribe();
我有以下观察结果:
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
都没有执行。我错过了什么?
您可能缺少订阅。所有 rxjs 的东西都是惰性的,在订阅完成之前不会 运行 。如果除了 tap
运算符之外不需要以其他方式处理结果,只需在末尾添加 .subscribe()
zip(...).pipe(
tap(...)
).subscribe();