我有一个函数调用一个异步函数(在一个循环中),它将为我提供一个函数下一次调用的参数。我认为编写代码会更有意义,所以这是我试过的(没有成功)。 我知道很多问题已经被问及这个问题,但我真的尝试了我所看到的一切。AngularJS - 延期递归承诺
removeMultipleAttachments: function(docid, rev, attachmentIDs) {
var requests = [];
var deferred = $q.defer();
var p = $q.when();
console.log(attachmentIDs);
angular.forEach(attachmentIDs, function(file, index) {
p = p.then(function (formerRes) {
return pouch.removeAttachment(docid, attachmentIDs[index].name, rev, function (err, res) {
$rootScope.$apply(function() {
if (err) {
deferred.reject(err);
} else {
rev = res.rev;
console.log(rev);
deferred.resolve(res);
}
})
});
});
requests.push(p);
})
$q.all(requests).then(function(){
console.log('DONE');
});
return deferred.promise;
}
我首先看到的是 var p = $ q.when(); 应该是 var p = $ q.defer(); – DrDyne
您是否需要依次删除附件,或者您不关心订单? –
好的,但是当()不应该用在承诺中? – ncohen