我有一個函數調用一個異步函數(在一個循環中),它將爲我提供一個函數下一次調用的參數。我認爲編寫代碼會更有意義,所以這是我試過的(沒有成功)。 我知道很多問題已經被問及這個問題,但我真的嘗試了我所看到的一切。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