RXJS 顺序 HTTP 请求

RXJS sequential HTTP request

我想执行顺序 HTTP 调用并将响应合并为一个唯一的可观察对象。

问题是:我的做法好像不对。确实,我想将第二个请求的数据合并到第一个请求中,但是我这样做的方式似乎是用第二个请求的结果替换第一个请求的结果。

这是调用的第一个请求:

[{vehicule_id:123, statistics:{speed:60,rotation:38}},...]

第二个:

[{vehicule_id:123, name:"name",description:"description},...]

我想要得到的结果:

[{vehicule_id:123, statistics:{speed:60,rotation:38}, name:"name",description:"description},...]

重要事项:第二个请求需要在第一个请求的响应中提供 vehicule_id。 使用我的代码,第二次调用的响应替换了第一次调用的结果而不是合并它们。

这是我的代码:

getUserVehiculesInfo(user_id: number, language: string): void {
this._data.getUserVehiculesInfo(user_id, language)
  .pipe(
    map(res => res.data[user_id]),
    switchMap(vehicules => forkJoin(vehicules.map(vehicule => this._data.getVehiculesInfo(tank.vehicule_id, language)))),
    tap(console.log)
  )
  .subscribe();
}

一旦你有了 vehiculesInfo(forkJoin 的结果,你只需要将它们与车辆组合起来:

switchMap(
  vehicules => forkJoin(...).pipe(
    map(infos => combineVehiculesAndInfos(vehicules, infos))
  )
)