AngularJs链接未定义的ajax请求和输出进度(如果一个请求失败)

时间:2013-09-10 14:46:43

标签: angularjs

我需要链接很多ajax请求。我正试图从不同的资源中获取数据,然后将所有响应合并在一起。我还想显示请求的进度状态通知。

所以我有这段代码:

app.controller('MainCtrl', function($scope,$http,$q) {
$scope.name = 'World';
$scope.progress = '';
var promises = [];

var myData = {};
var urls =['data.json','data2.json','error.json','data3.json'];
var responses =['First call','Second call','Third call','Fourh call'];


for (var i = 0; i < urls.length; i++) {
  var promise = $http.get(urls[i]).then(function(result){ 
    $scope.progress = responses[i]; 
    $scope.pr = result.data;
    console.log(result.data)}); 
  promises.push(promise); 
}


$q.all(promises).then(function(values){
    console.log(values)
},function(error){
    console.log(error.data)
})


}); 

[PLUNKER]

http://plnkr.co/edit/Tv5XbdPSUJVNu18nv75l

1 个答案:

答案 0 :(得分:0)

您可以使用$q.all获取所有响应,然后同时处理响应

$q.all(promises).then(function (values) {
    //process all result together
});

您还可以为每个promises插入一个回调函数来指示进度

$q.all(promises[0].then(callback), promises[1].then(callback), ...).then(function (values) {
    //process all result together
});