【发布时间】:2016-08-24 00:48:58
【问题描述】:
在我的“gulpfile.js”的方法“myMethod”中,我想创建多个 Promise。数量取决于数组大小(方法参数)。当我调用该方法时,我想确保在继续之前完成所有承诺。我宁愿在所有承诺都兑现之前不要返回。
请看最后五行代码。
依赖关系
var promiseAll = require('gulp-all');
var del = require('del');
var deleteEmpty = require('delete-empty');
gulp-all | del | delete-empty
辅助方法
var oneForAllPromises = function(promises){
var promAll = promiseAll(promises);
promAll.then(function(param) {
console.log('foo');
}, function(err) {
console.error('foo');
});
return promAll;
}
有问题的代码
var myMethod = function(array1, array2){
var promise = del(array1, {force: true});
promise.then(paths => {console.log('foo');});
var promises = [];
promise.then(()=>{
for(var i=0; i<array2.length; i++){
promises[i] = new Promise(function(resolve, reject) {
deleteEmpty(array2[i], {force: true},
function(err, deleted){
if(err){
console.log('foo');
reject
}else{
console.log('foo');
resolve
}
}
);
});
}
});
// PROBLEM: Returns empty promises array
console.log("promiesesLENGTH: "+promises.length); // promiesesLENGTH: 0
// Create one promise for all the promises
return oneForAllPromises(promises);
}
【问题讨论】:
标签: javascript node.js npm gulp