async.series函数未完成



我正面临async.js的一个奇怪问题。我正在解释整个场景。我在数据库里有两张表。设一个是具有5行的CCD_ 2,另一个为具有2840行的CCD_。由于我的项目在sails.js中,我使用waterline作为ORM。我在async.series中运行三个函数。第一个用于从表X获取所有行,第二个用于从Y获取所有行。在第三个函数中,我在第二个函数中获取的Y的所有行上运行async.eachSeries,并调用外部POST api。所以整个流程是,

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([
    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)
      });
  });

最新更新