【发布时间】:2018-05-26 15:05:08
【问题描述】:
我做了一个 http 调用来获取一个带有 objs 的数组。现在我想为每个返回我 ID 的 objs 调用另一个 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,但我不知道如何将它集成到代码中。
【问题讨论】:
-
尝试使用另一个
concatMap代替地图 -
与另一个 concatMap 我得到了近 2500 个 objs 而不是 49 个 Objs 的 arr :'D
-
你在第一张地图上用过吗
(.map(clan => { ....)? -
见this
标签: javascript angular asynchronous rxjs observable