在使用rxjs的以下代码中,如何只有1个订阅语句:
this.authStore.jwtContainer$.subscribe(x =>
this.userService.getUserById(x.userLoginId).subscribe(z => this.user = z));
我对rxjs比较陌生,希望它是地图操作员之一?
答案 0 :(得分:3)
只需使用如下的switchMap(或mergeMap)运算符
简单方法
this.authStore.jwtContainer$.pipe(
switchMap(x=>this.userService.getUserById(x.userLoginId))
.subscribe(z => this.user = z);
更好
this.authStore.jwtContainer$.pipe(
map(x=>x.userLoginId),
switchMap(loginId=>this.userService.getUserById))
.subscribe(z => this.user = z);
switchMap和mergeMap可以将结果从可观察的传递到另一个,简单的“ map”运算符可用于调整您的发射值。