gpt4 book ai didi

javascript - RXJS Observables - 对每个索引值和合并结果的 http 调用

转载 作者:行者123 更新时间:2023-11-30 20:29:14 24 4
gpt4 key购买 nike

我执行一个 http 调用以获取一个带有 objs 的数组。现在我想为每个返回给我 ID 的对象调用另一个 http 调用。毕竟我想要一个可观察到的结果。

到目前为止,我设法为每个索引获取了一个 http 调用。问题而不是一个结果我得到了多个。

getStats(tag: string) {
return this.service.getClanByClanTag(tag)
.map(clan => {
return clan.memberList; //the arr that return the ID's
})
.switchMap((member: PlayerByMemberListType[]) => {
return member; // singleObj of the arr
})
.concatMap((singleMember) => {
return this.service.getPlayerData(singleMember.tag).map(player => {
//push data to the new arr which should return only one time
this.newArr.push({
tag: singleMember.tag,
name: singleMember.name,
warStars: player.warStars,
trophiesNightBase: singleMember.versusTrophies
});
return this.newArr;
});
});
}

这是订阅后控制台打印出来的内容:

Array [ {…} ]
Array [ {…}, {…} ]
Array(3) [ {…}, {…}, {…} ]
Array(4) [ {…}, {…}, {…}, {…} ]
Array(5) [ {…}, {…}, {…}, {…}, {…} ]
...

我知道我需要某种Observable.forkJoin,但我不知道如何将它集成到代码中。

最佳答案

尝试这样的事情:

this.service.getClanByClanTag(tag)
.mergeMap(clan => clan.memberList)
.mergeMap(
member => this.service.getPlayerData(member.tag), // supposedly this returns an observable
(member, player) => ({
tag: member.tag,
name: member.name,
warStars: player.warStars,
trophiesNightBase: member.versusTrophies
})
)
.toArray()

关于javascript - RXJS Observables - 对每个索引值和合并结果的 http 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544085/

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