【发布时间】:2016-12-14 09:45:37
【问题描述】:
我遇到了bluebird concurreny 的问题。基本上我希望我的承诺一个接一个地被解雇。我发现这可以使用bluebird 来完成。这是我的代码:
var getdep = Promise.promisify(
function getdep(module, cb ) {
console.log(module + " ...start ...")
ls(module, function(data) {
cb(null, data);
});
});
Promise.all([0,1,2,3,].map(function(data){
return getdep("uglify-js@2.4.24");
}, {concurrency: 1}))
.then(function(all){
console.log(all);
})
.catch(function(err){
console.log(err);
});
我尊重的是({concurrency: 1})。
uglify-js@2.4.24 ...start ...
loading: uglify-js@2.4.24@latest
loading: uglify-js@2.4.24@latest
loading: uglify-js@2.4.24@latest
loading: uglify-js@2.4.24@latest
....
uglify-js@2.4.24 ...start ...
loading: uglify-js@2.4.24@latest
loading: uglify-js@2.4.24@latest
loading: uglify-js@2.4.24@latest
loading: uglify-js@2.4.24@latest
... 等等
但我所拥有的是:
uglify-js@2.4.24 ...start ...
uglify-js@2.4.24 ...start ...
uglify-js@2.4.24 ...start ...
uglify-js@2.4.24 ...start ...
loading: uglify-js@2.4.24@latest
这意味着bluebird 正在同时开始我的所有承诺。
你能告诉我我的代码有什么问题吗?谢谢
【问题讨论】:
-
你打错了)你将
concurrency设置为Array.map而不是Promise.all。最好在承诺链的每一步都返回一些东西