当前位置 : 主页 > 网页制作 > Nodejs >

node.js – Bluebird – 如何在块中循环遍历数组,等待块响应

来源:互联网 收集:自由互联 发布时间:2021-06-16
有一种方法可以在块中循环遍历一组id,并等待这个块的响应继续循环? 例如: Promise = require("bluebird")function(array){ return Promise.*something that will loop chunks from my array and wait for each chunk resp
有一种方法可以在块中循环遍历一组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);
        });
}

我的问题是我需要等待来自我正在访问的数据库的响应,并且它无法回答我正在同时创建的所有呼叫.我的代码引发了超时异常,因为我太激进了.

我的代码如下:

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端口.

网友评论