javascript – AngularJS等待foreach完成中的所有异步调用

我正在循环使用angular.forEach的数组,并调用一个非角度的ajax库(Trello client.js).客户端确实有’成功’和’错误’回调,但不返回角度延迟.一旦所有的ajax调用都完成,我想执行一个函数.

我有如下代码

$scope.addCards = function(listId)
            {
                var cardTitles = $scope.quickEntryCards[listId].split('\n');
                angular.forEach(cardTitles,function(cardTitle,key)
                {
                    Trello.post('/cards',{
                        name:cardTitle,idList:listId
                    },function(){ },function(){ });
                });
                //Todo: wait for above to complete...
                $scope.init($routeParams.boardId);  
                $scope.quickEntryCards[listId] = '';    
            };

我可以在// Todo和回调函数中执行哪些操作,以便最后2行只在所有帖子成功或失败后运行?

解决方法

代码使用angular的$q服务.
requests = [];

forEach cardTitle
   var deferred = $q.defer();
   requests.push(deferred);
   Trello.post('/path',{},deferred.resolve,deferred.reject);

$q.all(requests).then(function(){
    // Todo
});

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...