RXJS顺序HTTP请求

RXJS顺序HTTP请求,rxjs,observable,rxjs-observables,Rxjs,Observable,Rxjs Observables,我想进行连续的HTTP调用,并将响应合并到一个唯一的可观察对象中 问题是:我这样做似乎是错误的。实际上,我希望将第二个请求中的数据合并到第一个请求中,但我这样做的方式似乎将第一个请求的结果替换为第二个请求的结果 这是第一个请求,称为: [{vehicule_id:123, statistics:{speed:60,rotation:38}},...] 第二条: [{vehicule_id:123, name:"name",description:"description},...] 我想得到

我想进行连续的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},...]
需要知道的重要事项:第二个请求需要在第一个请求的响应中提供车辆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();
}

一旦获得了forkJoin结果的车辆信息,您只需将其与车辆组合:

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

有没有一种通用的方法?像rxjs方法?还是我必须创造我的?你必须创造你的。这与RxJS无关:您有两个数组,它们都包含部分车辆信息,您需要将它们组合起来。这是业务逻辑。