javascript - 多个 $http 的 Angular promise

标签 javascript angularjs promise angular-promise

我正在尝试执行多个 $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/

相关文章:

JavaScript 创建新方法

javascript - d3js : time scaling and winter months

javascript - 从另一个属性引用 js 属性的正确方法

javascript 如何创建函数服务(构造函数)

javascript - 如何同步运行嵌套的异步方法?

javascript - 减少 JavaScript 中麦克风输入的音频播放延迟?

javascript - 防止 mCustomScrollbar 中的滚动事件传播

javascript - Laravel + AngularJS Controller 已存在,但返回不是函数的错误

javascript - 嵌套的 Promise.all 函数产生意外的结果

angular - 在 Angular 4 中等待订阅和 promise