I'm trying to resolve a deferred of a promise after a Q.allSettled
is finished. However, the .then
of the allSettled
never executes and the promise array results are never returned. No exceptions are thrown I just never get inside the .then
block. As you can see from the code below I'm inside of a .then
block iterating over some file upload elements and then executing file uploads and some saves based on those returns.
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;