【问题标题】:angular2- Observable getting data out of orderangular2- Observable 获取数据乱序
【发布时间】:2017-07-07 13:31:34
【问题描述】:

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

【问题讨论】:

    标签: angular rxjs observable angular2-services


    【解决方案1】:

    你可以map一个observable:

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

    【讨论】:

    • 地图还是平面地图?
    • 两者都可以用,但flatMap 肯定更好。
    • 然后改变你的答案
    • 我如何将必须通过 apiService.findVH 进行 for 循环合并到此中?
    • 你不必循环任何东西,Observable 是一个Iterable Object。看看我的例子。
    猜你喜欢
    • 2016-07-23
    • 2018-01-15
    • 1970-01-01
    • 2017-12-09
    • 2018-01-27
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 2020-08-05
    相关资源
    最近更新 更多