angular2-可观察到的数据乱序

时间:2017-07-07 13:31:35

标签: angular rxjs observable angular2-services

所以我使用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)按顺序调用索引?

1 个答案:

答案 0 :(得分:2)

你可以map一个可观察的:

this
  .apiService 
  .findAll("virtualhosts/deltest")
  .flatMap(data => this.apiService.findVH(data.VirtualHosts))
  .subscribe(/* whatever you want */)
;