我正在開發一個angularJS應用程序,這是我使用此框架的第一個網站。在我的應用程序中,我需要在for循環中進行$ http調用。在下一次迭代之前的循環中,我想等待前一次調用的響應。什麼是最好和簡單的方法來做到這一點。我試過使用callBack,$ q.all(),然後在所有這些只有最後一個請求正在經歷。請幫忙。
注意:我通過$ http調用的API無法排隊請求。
編輯: 我已經嘗試了兩種方法,在這兩種情況下,只有最後一個請求正在成功。你能告訴我我在這裏做什麼錯了嗎?
方法1:
var promiseArray=[];
for(var i=0;i<items.length;i++)
{
var promise=services.Post(items[i]);
promiseArray.push(promise);
}
$q.all(promiseArray).then(data)
{
...
}
方法2:
var promises = [];
for (var i = 0; i < items.length; i++) {
var deffered = $q.defer();
var promise = services.Post(items[i]);
promise.success(function(data) {
deffered.resolve(data);
})
promises.push(deffered);
}
變種結果= $ q.all(承諾);
編輯:2 服務代碼:
Services.Post = function(lineItemId, submitUrl) {
var url = (submitUrl) ? submitUrl : Services.serviceUrl;
return $http.post(url, {
"LineItemID": lineItemId
}).
success(function(data, status, headers, config) {
Services.processResponse(data, status, headers, config);
}).
error(function(data, status, headers, config) {
JL('Angular').error('Error response when calling Service ' + config);
});
};
看看異步LIB(https://github.com/caolan/async),你可以通過browserify /的WebPack /熱蒙 –