有一种方法可以在块中循环遍历一组id,并等待这个块的响应继续循环? 例如: Promise = require("bluebird")function(array){ return Promise.*something that will loop chunks from my array and wait for each chunk resp
例如:
Promise = require("bluebird")
function(array){
return Promise.*something that will loop chunks from my array and wait for each chunk response*.map(function(id){
return myfunction(id);
});
}
我的问题是我需要等待来自我正在访问的数据库的响应,并且它无法回答我正在同时创建的所有呼叫.我的代码引发了超时异常,因为我太激进了.
我的代码如下:
Promise = require("bluebird")
function(array){
return Promise.map(array, function(id){
return myfunction(id);
});
}
编辑:
我找到了解决方案!
Promise = require("bluebird")
function(array){
return Promise.map(array, function(id){
return myfunction(id);
}, {concurrency: 10});
}
如果你没有使用promises,async模块有很多方法可以处理这些场景.如果要一次发出一个请求,可以使用eachSeries().如果你想提高效率,可以使用parallelLimit,这可以确保同时触发max X回调.
还有async的promise版本,如async-q和bluebird-promise端口.
