我正在尝试执行多个 $http
调用,我的代码如下所示:
var data = ["data1","data2","data3"..."data10"];
for(var i=0;i<data.length;i++){
$http.get("http://example.com/"+data[i]).success(function(data){
console.log("success");
}).error(function(){
console.log("error");
});
}
我如何保证所有 $http
调用都成功?如果其中任何一个失败,将执行一些操作。
最佳答案
您也可以使用 $q.all()
方法。
因此,根据您的代码:
var data = ["data1","data2","data3"..."data10"];
for(var i=0;i<data.length;i++){
$http.get("http://example.com/"+data[i]).success(function(data){
console.log("success");
}).error(function(){
console.log("error");
});
}
你可以这样做:
var promises = [];
data.forEach(function(d) {
promises.push($http.get('/example.com/' + d))
});
$q.all(promises).then(function(results){
results.forEach(function(data,status,headers,config){
console.log(data,status,headers,config);
})
}),
这基本上意味着执行整个请求并在所有请求完成时设置行为。
On previous comment:
使用状态,您可以了解是否有任何错误。如果需要,您还可以为每个请求设置不同的配置(例如超时)。
如果其中任何一个失败,将执行一些操作。
From docs这也是 based on A+ specs:
$q.all(successCallback, errorCallback, notifyCallback);
关于javascript - 多个 $http 的 Angular promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32794348/