簡體   English   中英

如何知道所有Angular2 HTTP調用何時完成

[英]How to know when all Angular2 HTTP calls are finished

我正在編寫一個應用程序,它將監視不同服務器上所有應用程序的當前內部版本號。 這是通過在每個應用程序中對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觀測

Observable.forkJoin相當於Promise.all但是對於observables。

這是一個示例:

以下是重構代碼的方法:

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.url,data._body);
    });
  }
);

這樣,當調用subscribe方法中注冊的回調時,您將確保執行所有請求...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM