【发布时间】:2015-06-21 02:48:12
【问题描述】:
我正在开发一个 angularJS 应用程序,这是我第一个使用这个框架的网站。在我的应用程序中,我需要在 for 循环中进行 $http 调用。在下一次迭代之前的循环中,我想等待上一次调用的响应。什么是最好和最简单的方法来做到这一点。我已经尝试使用 callBack、$q.all()、.then 在所有这些中只有最后一个请求正在通过。请帮忙。
注意:我通过 $http 调用的 API 无法对请求进行排队。
编辑: 我已经尝试了以下两种方法,在这两种情况下,只有最后一个请求成功。你能告诉我我在这里做错了什么吗?
方法一:
var promiseArray=[];
for(var i=0;i<items.length;i++)
{
var promise=services.Post(items[i]);
promiseArray.push(promise);
}
$q.all(promiseArray).then(data)
{
...
}
方法二:
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);
}
var 结果 = $q.all(promises);
编辑: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);
});
};
【问题讨论】:
-
查看异步库 (github.com/caolan/async),您可以通过 browserify/webpack/jspm 在浏览器上加载它
标签: javascript angularjs promise angular-http angular-promise