gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:21:39 24 4
gpt4 key购买 nike

我有一个包含司机 ID 的行程实体。我可以使用 RESTFull 端点获取行程,例如/旅行/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) => {
}
);

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

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

关于angular - 使用 rxjs 将数据添加到 http 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35937491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com