Rxjs 将 Observable<any>[] 转换为 Observable<any[]>

Rxjs Convert Observable<any>[] to Observable<any[]>

假设我们有两个接口:

export interface IA{
   something: string;
   myprop: number;
}

export interface IB{
   myprop: number;
}

我有一个方法应该从后端调用 returns IA 对象的端点,然后它应该调用另一个端点,然后将两个结果组合到 IA 对象中。以前我在做这样的事情:

GetA():Observable<IA>{
    return this.httpClient
        .get<IA>('somewhere')
        .concatMap(a=>Observable.combineLatest(
           Observable.of(a), 
           GetB(a)
        ))
        .map([a,b]=>combineSomehowAandB(a,b))
}

但是现在,有了 rxjs 的新版本,我不得不改用 .pipe(operators[]) 。如何用 pipe() 实现同样的功能?我这样试过,但它不起作用:

GetA():Observable<IA>{
    return this.httpClient
        .get<IA>('somewhere')
        .pipe(
           concatMap(a=>[Observable.of(a), GetB(a)]),
           combineLatest(),
           map([a,b]=>combineSomehowAandB(a,b))
         );
}

提前致谢。

看来您只是没有正确地将原始链重写为 RxJS 6:

return this.httpClient.get<IA>('somewhere')
  .pipe(
    concatMap(a => combineLatest(of(a), GetB())),
    map(([a,b]) => combineSomehowAandB(a,b)),
  );

不带任何参数单独使用combineLatest()是没有用的。

使用of代替observable.of

GetA():Observable<IA>{
    return this.httpClient
        .get<IA>('somewhere')
        .pipe(
           concatMap(a=> combineLatest(
              of(a), 
              GetB()
           )),
           map([a,b]=>combineSomehowAandB(a,b))
         );
}