함수의 다음 호출에 대한 매개 변수를 제공하는 비동기 함수 (루프)를 호출하는 함수가 있습니다. 나는 코드를 작성하는 것이 더 의미가 있다고 생각한다. 그래서 내가 시도한 것은 성공했다. 이 주제에 관해 많은 질문을했지만 실제로 본 모든 것을 시도했습니다. 각 removeAttachment()
에 대한 새로운 rev
을 필요로하기 때문에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