有没有办法循环遍历一个id数组,分块,等待这个 block 的响应继续循环?
例如:
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
,它可以确保同时触发最多 X 个回调。
还有异步的 promise 版本,例如 async-q
和 bluebird-promise 端口。
关于node.js - Bluebird - 如何以 block 的形式循环遍历数组,等待 block 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32407330/