使用 rxjs 将数据添加到 http 响应

2024-05-29

我有一个包含司机 ID 的旅行实体。 我可以使用 RESTFull 端点获取获取行程,例如/trips/2/.

//example response
{
  id: "2",
  driver_id: "123"
}

我可以使用端点获取驱动程序详细信息。例如/drivers/123/, 我最后的尊重的回应是

//expected response from observable
{
  id: "2",
  driver_id: "123",
  detailed_driver: {
    name: "abc",
    id: "123"
  }
}

目前我这样做如下

this.http("/trips/2/").map(data => data.json()).subscribe(trip => {
   this.http("/drivers/" + trip.driver_id + "/").map(data => data.json()).subscribe(driver => {
      trip.detailed_driver = driver;
      this.trip = trip 
   }
}

我如何使用 Rxjs 来使用这两个端点从单个可观察到的最终预期响应?


你可以使用flatMap运算符和Observable.forkJoin如下所述:

this.http.get('/trips/someid')
   .map(res => res.json())
   .flatMap(res => {
     return Observable.forkJoin([
       Observable.of(res),
       this.http.get('/drivers/'+res['driver_id']).map(res => res.json())
     ]);
   })
   .map(res => {
     res[0]['detailed_driver'] = res[1];
     return res[0]
   })
 .subscribe(
   (data) => {
   }
 );

The flatMap允许在收到第一个请求时执行另一个请求。Observable.forkJoin允许在最后接收第一个响应的响应和第二个响应的结果。

这样您就可以用第二个结果更新第一个结果......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 rxjs 将数据添加到 http 响应 的相关文章

随机推荐