如何在async for循環之後添加回調函數?async for each循環之後回調函數
下面是一些更好的方面:
$scope.getAlbums = function(user, callback) {
$scope.albumsList.forEach(function (obj, i) {
$scope.getAlbum(user, obj.id, function(value){
$scope.albums.push(value);
});
});
// callback(); ???
};
$scope.getAlbums('guy123', function(){
// forEach loop is all done!
console.log($scope.albums)
});
控制器:
.controller('Filters', ['$scope','Imgur', function($scope, Imgur) {
$scope.getAlbum = function(user, id, callback) {
Imgur.album.get({user:user, id:id},
function(value) {
return callback(value.data);
}
);
}
$scope.getAlbums = function(user, callback) {
// Callback function at end of this forEach loop?
// Request is async...
$scope.albumsList.forEach(function (obj, i) {
$scope.getAlbum(user, obj.id, function(value){
$scope.albums.push(value);
});
});
};
)]};
服務:
.factory('Imgur', function($resource) {
return {
album : $resource('https://api.imgur.com/3/account/:user/album/:id')
}
});
這正是我所需要的,但是,當我嘗試使用外部資源數據時 - 它不符合它的承諾;)...您能否提供任何API數據(如Twitter)的示例? – 2013-05-08 00:39:56
由於您使用的'$ resource'也會返回一個承諾,所以您需要修改代碼,以便它們一起鏈接承諾並調用'resolve()'啓動整個機制。 – 2013-05-08 01:05:14
請參閱jsfiddle上的示例以更新模擬ajax文章。 – 2013-05-08 01:41:31