async.series函数没有完成

我正面临一个奇怪的问题与async.js 。 我正在解释整个场景。 我在数据库中有两个表。 让一个是5行,另一个是2840行的Y 由于我的项目在sails.js我使用waterline作为ORM。 我在async.series运行三个函数。 第一个用于获取表X所有行,第二个用于获取表Y所有行。 在第三个函数中,我运行async.eachSeries遍历所有在第二个函数中获取的Y行,并调用一个外部的POST API。 所以整体stream程是,

 async.series([ function( callback1 ){ // Fetch all rows from `X` }, function( callback1 ){ // Fetch all rows from `Y` }, function( callback1 ){ async.eachSeries(allRowsOfY, function(item, callback2){ // Call an external POST api. }, function(err){ }); }, ], function( err ){ // Do something }); 

问题是,即使Y有2840行,只有大约600个API调用正在进行,那么async.series就开始async.series开始运行。 而这个事件还在继续。 为什么发生这种情况?

当您拥有所有需要的数据时,将async.series移到callback部分

 async.series([ function(callback) { // Fetch all rows from `X` callback(null, 'one'); }, function(callback) { // Fetch all rows from `Y` callback(null, ['two', 'three', 'four']); } ], function(err, allRowsOf) { async.eachSeries(allRowsOf[1], function(item, callback) { // take second element from array of results creates by async.series console.log('call external POST API with: ', item) callback() // call callback without error if everything is OK }, function(err) { if (err) console.log('error', err) }); });