gpt4 book ai didi

angular - 使用 Observables/RxJS 合并 Angular 中的两个依赖 API 调用

转载 作者:行者123 更新时间:2023-12-05 04:10:48 25 4
gpt4 key购买 nike

假设我有两个返回 JSON 的 API 调用:

行数:

{
{"row": 1, detailId: "a"}
{"row": 2, detailId: "b"}
}

行详细信息:

{
details: { this row details }
}

我需要获取行,然后遍历获取 detailId 的每个行对象以再次调用 rowDetails,并将详细信息附加到行对象。最终结构需要像这样发出:

{
{"row": 1, "detailId": a, "details": { row details}}
{"row": 2, "detailId": b, "details": { row details}}
}

在 Angular 1 中,我会使用 q.allSettled 来等待所有调用完成。

我正在尝试以可观察的方式做到这一点,但我在概念上和实践上都在努力。我不明白您应该如何实际发出合并的“流”作为最终产品。

我大致试过了:

 this.http
.get('rows')
.map(res => res.json())
.flatMap(group => this.http.get('rowDetails' + detailId))
.map(res => res.json()).
.subscribe(res => console.log(res))

订阅只是发出 rowDetails 调用。我如何遍历行调用中的每个对象并在合并最终产品的结果时将 detailId 用于另一个调用?任何帮助将不胜感激。

最佳答案

您需要获取每个项目,创建一个 HTTP 请求,并在此内部请求完成后进一步传播更新的项目。

this.http
.get('rows')
.map(res => res.json())
.flatMap(group => this.http.get('rowDetails' + group.detailId)
.map(res => {
group.details = res.json();
return group;
})
)
.subscribe(res => console.log(res))

请注意,我实际上是从内部 map 返回 group。显然有很多方法可以解决这个问题,但我认为这是最简单的方法。

关于angular - 使用 Observables/RxJS 合并 Angular 中的两个依赖 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946886/

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