微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何知道所有Angular2 HTTP调用何时完成

我正在编写一个应用程序,它将监视不同服务器上所有应用程序的当前内部版本号.这是通过在每个应用程序中对txt文件发出http请求来完成的.我正在使用foreach循环.

我遇到的问题是我不确定(使用Observables)如何知道所有请求何时完成.

当请求返回时,我将响应添加为对象数组的属性.然后,一旦我拥有了所有数据,我就将它绑定到组件的模板,然后由管道进行过滤.因此,我需要确保在所有数据完成后才能绑定它.

以下是我获取数据的方式:

this.apps.forEach(app => {
  app.Environments.forEach(env => {
    this._buildMonitorService.getBuilds(env.URL)
      .subscribe((data) => {     
        setupBuilds(this.apps,data.url,data._body);
      });                
  });
});

setupBuilds将响应添加到我的应用程序数组中.

我正在寻找的东西实际上是一个Promise.all,我将绑定
this.builds到setupBuilds中的数据设置,但我不知道如何用rxjs observables做到这一点

Observable.forkJoin相当于Promise.all但是对于observables.

这是一个示例:

> Angular2 Observable.forkJoin of observable variables – ReferenceError: Observable is not defined

以下是重构代码方法

var observables = [];
this.apps.forEach(app => {
  app.Environments.forEach(env => {
    observables.push(this._buildMonitorService.getBuilds(env.URL));
  });
});

Observable.forkJoin(observables).subscribe(
  (result) => {
    result.forEach((data) => {
      setupBuilds(this.apps,data._body);
    });
  }
);

这样,您将确保在调用subscribe方法注册的回调时执行所有请求…

原文地址:https://www.jb51.cc/angularjs/143617.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐