我需要链接很多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]
答案 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
});