有一种方法可以在块中循环遍历一组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端口.