我将$ http.get对象从服务返回到控制器。
this.fetch = function(index){
var url = some_url;
return $http.get(url,{timeout:8000});
};
在控制器中我有 -
var request = geturl.fetch(0);
request.success(function(data,status,headers,config){
// some logic
}).error(function(data,status,headers,config){
// some logic
});
$scope.promise.push(request); // $scope.promise is an array which contains all the promises
whenAll($scope.promise).done(function(){
});
功能whenAll -
function whenAll(promises) {
var i, data = [],
dfd = $.Deferred();
for (i = 0; i < promises.length; i++) {
promises[i].done(function(newData) {
// something
}).fail(function() {
//something
});
}
return dfd.promise();
}
我收到以下错误 - TypeError:promises [i] .done不是函数
答案 0 :(得分:2)
如果你想在所有承诺解决时执行某些事情......
...你应该看看$ q.all()
享受!
答案 1 :(得分:0)
这不是我应该说你必须使用$ q服务的角度方式。: -
$q.all([Your array]).then(function(values) {
//Your code
});
服务: -
this.fetch = function(index){
var url = some_url;
var def = $q.defer();
$http.get(url,{timeout:8000}).success(function(data) {
def.resolve(data);
})
.error(function() {
def.reject("Failed to get albums");
});
return def.promise;;
};
控制器: -
var promises = [];
var promise1 = geturl.fetch(0);
var promise2 = geturl.fetch(1);
promises.push(promise1);
promises.push(promise2);
$q.all(promises).then(function(results){
});
希望有所帮助:)