要求是我在需要返回结果的 JavaScript 函数中使用了名为 Q.all 的 Q.js 功能,前提是 Q.all 成功完成。
我的目标是返回一个具有两个属性的对象,分别称为 wrongsize 和 OKsize。这两个属性都是 javascript 数组。
问题是我不确定如何将 Q.defer 函数与 Q.all 包含在同一个函数中。
function filterNonConformingPageSize(files) {
var addToWhichGlobalVariable = "pageSizesOfNewFiles";
promises = [];
for (var i=0; i<files.length; i++) {
promises.push(
getSizeSettingsFromPage(files[i], addToWhichGlobalVariable, calculateRatio)
);
}
// *** sort out the files after all promises have been resolved
var resultObj = Q.all(promises).then(function() {
var test = new Object();
var filesWithOkaySize = new Array();
var filesWithWrongSize = new Array();
for (var i=0; i<files.length; i++) {
if (pageSizesOfNewFiles[i].size == majorityPageSize) {
filesWithOkaySize.push(files[i]);
} else {
filesWithWrongSize.push(files[i].name);
}
}
test['wrongsize'] = filesWithWrongSize;
test['okaysize'] = filesWithOkaySize;
return test;
});
return resultObj;
}