[英]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.