gpt4 book ai didi

javascript - 如何按顺序调用两个 API 并将两者的数据作为单个 Observable 返回

转载 作者:行者123 更新时间:2023-12-03 07:25:29 26 4
gpt4 key购买 nike

我有两个 API 要按顺序调用,第一个 API 返回的数据用于第二个。

我试过在第一次调用中使用 concatMap,然后使用第二次调用中返回的值,但是当我订阅可观察对象时,我只得到第二次调用的数据。

如何在单个可观察对象中获取来自两个调用的数据?

this.dataService.getPlayerData("heunetik").pipe(
concatMap(data => this.dataService.getLifetimeStats(data.payload.guid))
).subscribe(finalData => {
console.log(finalData);
});

阅读文档,这似乎是最有意义的,但是示例非常困惑...:/

最佳答案

您想做某种内部映射来组合数据:

this.dataService.getPlayerData("heunetik").pipe(
switchMap(data => this.dataService.getLifetimeStats(data.payload.guid)
.pipe(map(innerData => [data, innerData])))
).subscribe(finalData => {
console.log(finalData);
});

这将返回数组中的数据,第一个数据集为 0,第二个数据集为 1。

switchMap 只是我的偏好,这里在 switch/concat/merge 之间并不重要...它们的用途略有不同,这对多次发射很重要,但它们在这里的功能完全相同,因为它们都是单次发射可观察的。我更喜欢 switch,因为我认为它在语义上更清晰,我期待单一发射,但在这一点上可能会有不同意见。

高阶映射曾经提供允许这种组合的第二个参数,但他们用 rxjs 5 或 6 左右删除了它以支持内部映射模式以节省导入大小(IMO 这是一个错误的决定.. . map 参数经常有用,内部 map 看起来很杂乱)。

关于javascript - 如何按顺序调用两个 API 并将两者的数据作为单个 Observable 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55711416/

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