gpt4 book ai didi

javascript - q.all 在 promise 完成之前被归还

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:54 27 4
gpt4 key购买 nike

我正在尝试使用 q.all 来管理多个 npm install module_name 方法的进程。

奇怪的是,似乎在 promise 完成之前就返回了 promise 。

installNodeModules: function(module_list){
function installModule(module_name){
var defer = q.defer();
console.log(module_name);
exec_child_process('npm install '+module_name, function(err,stdout,stderr){
if(err) defer.reject(err);
defer.resolve();
return defer.promise;
});
}

var promise_array = [];
for (var i =0; i<module_list.length;i++){
promise_array.push(installModule(module_list[i]));
console.log('promises array created');
}

q.all(promise_array).done(function(){
console.log('promises returned');
});
},

我尝试在 all 之后同时使用 donethen 方法,但结果相同,promise 在 之前返回>npm 安装 已完成。

最佳答案

installModule应该这样写:

        function installModule(module_name){
var defer = q.defer();
console.log(module_name);
exec_child_process('npm install '+module_name, function(err, stdout, stderr){
if(err) {
defer.reject(err);
} else {
defer.resolve();
}
});
return defer.promise;
}

installModule 应该返回 promise ,而不是回调。

关于javascript - q.all 在 promise 完成之前被归还,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22313392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com