我正在尝试多个$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","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,config); }) }),
以上这些基本上意味着执行整个请求,并在所有的完成时设置行为.
使用状态你可以知道是否有错误.另外,如果需要,可以为每个请求设置一个不同的配置(例如超时).
如果任何人失败,将会采取一些行动.
$q.all(successCallback,errorCallback,notifyCallback);