所以我使用getAll来获取所有学校的虚拟主机,它们作为ID(虚拟主机的ID)列表返回。然后,为了获取虚拟主机的数据,我必须在每个ID上调用另一个get。我通过像这样的for循环来做到这一点 -
this.apiService.findAll("virtualhosts/deltest")
.subscribe((data) => {
this.data = data.docs[0]
error => console.log(error)
for (let i = 0; i < this.data.VirtualHosts.length; i++) {
this.apiService.findVH(this.data.VirtualHosts[i])
.subscribe((data) => {
this.data = data.docs[0]
this.jsonData = this.jsonData.concat(this.data)
})
}
});
问题是,apiService.findVH没有按照apiService.findAll给出的ID的顺序调用get。每次调用它时,它都不按列表的顺序计算ID(因此this.data.VirtualHosts [i]的索引不同)如何使findVH(get call)按顺序调用索引?
答案 0 :(得分:2)
你可以map
一个可观察的:
this
.apiService
.findAll("virtualhosts/deltest")
.flatMap(data => this.apiService.findVH(data.VirtualHosts))
.subscribe(/* whatever you want */)
;