有一种方法可以循环通过id数组,在块中,并等待该块的响应继续循环?
,
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);
});
}
我的问题是我需要等待我正在访问的DB的响应,并且它不能回答我同时创建的所有调用。我的代码抛出了一个超时异常,因为我太激进了。
我的代码如下:
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});
}
如果您不使用承诺,async
模块有很多方法来处理这些场景。如果您想一次发出一个请求,您可以使用eachSeries()
。如果你想要更有效率一点,你可以使用parallelLimit
,它可以确保同时触发最多X个回调。
也有async的承诺版本,如async-q
和蓝鸟承诺端口