Node.js Bluebird-如何在数组中分块循环,等待块响应

Node.js Bluebird-如何在数组中分块循环,等待块响应,node.js,Node.js,有一种方法可以在一个ID数组中以块的形式循环,并等待该块的响应继续循环 例如: 我的问题是,我需要等待我正在访问的数据库的响应,它不能同时应答我正在创建的所有呼叫。我的代码引发超时异常,因为我太激进了 我的代码如下: Promise = require("bluebird") function(array){ return Promise.map(array, function(id){ return myfunction(id); }); } 编辑: 我找到了

有一种方法可以在一个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});
}

如果您同意不使用承诺,那么
async
模块有很多方法来处理这些场景。如果您想一次发出一个请求,可以使用
eachSeries()
。如果您想更高效一点,可以使用
parallelLimit
,它确保同时启动max X回调


异步也有承诺版本,比如
async-q
和bluebird承诺端口。

是的,我需要它成为承诺。什么是bluebird promise端口?他们采用了异步库与bluebird promise集成。我发现了,但它似乎没有经过测试,所以我不想推荐它。但它可能是好的!你应该去看看是否有适合你需要的包裹。谢谢威廉!我找到了更好的解决方案,请看我的编辑:)
Promise = require("bluebird")

function(array){
 return Promise.map(array, function(id){
        return myfunction(id);
      }, {concurrency: 10});
}