我正在通过angular.forEach循环数组并调用非角度ajax库(Trello client.js)。客户端确实有'成功'和'错误'回调,但不返回角延迟。我想在所有ajax调用完成后执行一个函数。AngularJS等待foreach内部的所有异步调用
我有以下代码:
$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并在回调函数,使最后两行只有在所有帖子后运行成功或失败怎么办?
我认为这让我朝着正确的方向发展,但Trello.post并没有兑现承诺。所以我需要钩入他们使用的回调和角度承诺... – Daniel
有趣的是,我看到我错过了你的问题。奇怪,因为它看起来会返回一个承诺。您可以使用$ q.defer()来做出任何承诺。我将添加伪代码为例。 –
是的,这是做到了。 Trello的API是异步的,只是没有角度的承诺,所以它很好地填充(现在我看到了如何去做);只需将deferred.resolve和deferred.reject作为Trello的成功和回调方法直接传递就可以缩短一点,如下所示: Trello.post( '/路径',{},deferred.resolve,deferred.reject); – Daniel