6
我需要使用for循環更新數組中每個對象的數據,並且一旦捕獲所有數據,就運行一個函數。我不想在此混合jQuery和做做在Angular中處理forEach Ajax調用的正確方法
這裏的適當角度的方式是我在做什麼,
$scope.units = ['u1', 'u2', 'u3'];
$scope.data = null;
//get individual unit data
$scope.getUnitData = function(unit){
service.getUnitData(unit).success(function(response){
$scope.data.push({'id' : response.id , 'value' : response.value});
});
};
$scope.updateAllUnits = function(){
$scope.data = null ; //remove existing data
angular.forEach($scope.units,function(val,key){
$scope.getUnitData(val);
};
console.log($scope.data); // Need to show all the data but currently it does not as the for each loop didn't complete
};
該服務被定義爲。
app.factory('service',function($http){
return {
getUnitData : function(unit){
return $http({
url : myURL,
method : 'GET',
params : {'unit' : unit}
});
}
}
});
如何在for循環中完成所有拉動操作後收到回調?
代碼中的'promises'只是一個數組。 $ q如何知道這個數組有所有的對象? – lostpacket
我們在同步的'forEach'裏面加入promise。當我們調用'$ q.when'時,承諾被創建,但沒有解決(仍然有數據來自服務器)。 '$ q.when'等待這一切完成。我已經刪除了大量的這個答案,因爲我意識到'$ http'已經返回一個承諾。 – Andyrooger
'$ q.when'可以接受一系列承諾?如果是這樣,很好的答案! –