Bir Q.allSettled
bittikten sonra bir söz ertelenmeye çalışıyorum. Ancak, allSettled
'un .then
hiçbir zaman yürütülmez ve söz dizimi sonuçları hiçbir zaman iade edilmez. Hiçbir istisna atılmadı .then
bloğuna asla girmem. Aşağıdaki koddan da görebileceğiniz gibi, bazı dosya yükleme öğeleri üzerinde yinelenen ve daha sonra dosya yüklemelerini yürüten ve bu geri dönüşlere dayanarak bazı tasarruflar yapan bir .then
bloğunun içindeyim.Q.allSettled sözlü iadesi sonuçları döndürmüyor
var deferred = Q.defer();
datacontext.getFileNameGuid(fileNamesNeeded).then(function (data) {
_.each($fileUploads, function(item){
if (item.files.length > 0) {
var promise = uploadFile(item, data[remainingFilesToUpload])
.then(function() {
return datacontext.saveItem(atom)
.then(function (data) {
return getItemSuccess(data, false);
}).done();
}).catch(function (data) {
logger.logError("An error occurred while updating your item. Please try again.", data, 'Error', true);
}).done();
fileUploadPromises.push(promise);
return promise;
}
});
// Either execute promises or bail
if (fileUploadPromises.length > 0) {
// Handle blockUI and spinner in last then.
Q.allSettled(fileUploadPromises).then(function() {
deferred.resolve('Images have been saved and scheduled for thumbnail generation.');
});
} else {
// Other logic here
}
});
return deferred.promise;
Her şeyden önce, [ertelenmiş antipattern] 'den (http://stackoverflow.com/q/23803743/1048572) kaçının! – Bergi
Hangi “o” geri aramalardan hangisi daha önce hiç katılmıyorsunuz? – Bergi
Bu .done() 'ın hiçbirine neden yok Q.allSettled'den sonra" o "i çalıştırmam gerekiyor ... – Bergi