如何在 Angular 的可观察地图中返回可观察对象

L. *_*der 4 rxjs angular

我真的找不到合适的词来形容我想做的事情。所以我只是展示我的尝试..这就是我尝试过的:

register(): Observable<boolean> {

   return this.registerNew().pipe(
     map(userData => {
       return this.updateProfile().pipe(                   (*1)
         map(profileData => {
           return profileData ? true : false;
         }))
     }))
}
Run Code Online (Sandbox Code Playgroud)

但当然我收到以下错误消息:

Type 'Observable<false | Observable<boolean>>' is not assignable to type 'Observable<boolean>'.

我也在考虑在我用 (*1) 标记的行中使用 await 而不是 return。

但我仍然无法让它以一种很好的方式工作。

Ser*_*gey 9

如果你想从一个 observable 切换到另一个并使用前一个的值,有一个switchMap可以像这样使用的运算符

register(): Observable<boolean> {

   return this.registerNew().pipe(
     switchMap(userData => {
       return this.updateProfile().pipe(                   (*1)
         map(profileData => {
           return profileData ? true : false;
         }))
     }))
}
Run Code Online (Sandbox Code Playgroud)

是什么导致发生registerNew,然后它将结果值传递给switchMap返回的 observable(switchMap 必须返回一个 observable 才能工作),然后内部 observable ( updateProfile)的结果到达订阅者。