1
我需要處理數組中的每個元素,爲每個元素進行HTTP調用,並且需要跟蹤每個調用的HTTP調用狀態並在所有事情完成時更新UI。目前我有以下代碼訪問HTTP內部的對象Observable處理數組時對象數組
for (var singleData of this.someData) {
this._Service.call(singleData.someData).subscribe(
data=> {
this.successGroups.push(singleData);
this.checkState();
},
error=> {
this.failureGroups.push(singleData);
this.checkState();
}
)
}
this._Service是一個簡單的服務,它使Angular2 HTTP調用並返回observable。目標如下:
- 撥打電話的列表中的每一項
- 如果成功標誌是成功,失敗視爲失敗
- 更新UI一旦所有呼叫完成(成功/失敗是無關緊要的。)
上述代碼的問題在於,由於「singleData」被更新,所以推送的值不正確。例如,當列表中第一個對象被執行的時候,「singleData」指向列表的第10個項目,而第10個項目取而代之。
一個破解就是將singleData對象傳入服務調用中,並將其附加到響應中。不喜歡這種方法壽。 –
這與Observables或Angular或其他任何東西無關。這是經典的函數內循環封閉問題。嘗試「爲(讓)」。 – 2016-05-16 03:37:05