我有一个包含司机 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(使用前将#替换为@)