异步每个系列和并行执行
Async each series and parallel execution
我有任何数组:
例子
数组 = [1 到 100 万]
目前,我正在做:
async.eachSeries(array,function(item,callback){
some async (
callback
)
});
我想做的事:
5 并行执行,是否可以使用异步?
异步库有很多不同的选项,可以运行 并行处理固定数量的请求。但是,请注意,一旦您 运行 并行执行多个操作,就无法保证并行操作的完成顺序,因为这取决于服务器及其 returns 它们的顺序。
以下是您的一些选择:
每个限制
迭代数组中的每个项目,最多同时执行 5 个操作。没有收集任何结果。对于 eachLimit()
,假设您不需要结果,或者您正在收集自己的结果作为 运行 执行这些操作的副作用。
async.eachLimit(array, 5, function(item, callback) {
// process each item here, call callback when done
}, function(err) {
// done with all of them here
});
地图限制
有点像 array.map()
,因为它迭代数组并在结果数组中按顺序收集结果。还允许您指定同时进行多少次飞行操作。请注意,个别操作可能不会 运行 完全按顺序(它们将按顺序请求,但可能会乱序完成),但最后可用的结果数组将按正确顺序包含所有结果。
async.mapLimit(array, 5, function(item, callback) {
// process each item here, call callback when done with the result value
// for each request
}, function(err, results) {
// done with all of them here and array of results (in order)
});
我有任何数组: 例子 数组 = [1 到 100 万] 目前,我正在做:
async.eachSeries(array,function(item,callback){
some async (
callback
)
});
我想做的事: 5 并行执行,是否可以使用异步?
异步库有很多不同的选项,可以运行 并行处理固定数量的请求。但是,请注意,一旦您 运行 并行执行多个操作,就无法保证并行操作的完成顺序,因为这取决于服务器及其 returns 它们的顺序。
以下是您的一些选择:
每个限制
迭代数组中的每个项目,最多同时执行 5 个操作。没有收集任何结果。对于 eachLimit()
,假设您不需要结果,或者您正在收集自己的结果作为 运行 执行这些操作的副作用。
async.eachLimit(array, 5, function(item, callback) {
// process each item here, call callback when done
}, function(err) {
// done with all of them here
});
地图限制
有点像 array.map()
,因为它迭代数组并在结果数组中按顺序收集结果。还允许您指定同时进行多少次飞行操作。请注意,个别操作可能不会 运行 完全按顺序(它们将按顺序请求,但可能会乱序完成),但最后可用的结果数组将按正确顺序包含所有结果。
async.mapLimit(array, 5, function(item, callback) {
// process each item here, call callback when done with the result value
// for each request
}, function(err, results) {
// done with all of them here and array of results (in order)
});