javascript – 对多个$http的Angular承诺

前端之家收集整理的这篇文章主要介绍了javascript – 对多个$http的Angular承诺前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试多个$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);
  })
}),

以上这些基本上意味着执行整个请求,并在所有的完成时设置行为.

On previous comment:

使用状态你可以知道是否有错误.另外,如果需要,可以为每个请求设置一个不同的配置(例如超时).

如果任何人失败,将会采取一些行动.

From docs也是based on A+ specs:

$q.all(successCallback,errorCallback,notifyCallback);

猜你在找的JavaScript相关文章