我正在循环使用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 });