Nodejs async.each 等待第一个循环

Nodejs async.each wait for first loop

本文关键字:第一个 循环 等待 each async Nodejs      更新时间:2023-09-26

>我正在尝试异步处理行Arr(假设 100 条记录),但我只想从数据库加载国家/地区列表一次以避免数据库连接。我正在尝试以下示例代码,但它正在打开数据库连接 100 次。

var countryList = null;
async.each(rowsArr, function(row, callback) {

    if( countryList == null )
    {
        console.log("open database here to get country list and then assign to below variable");
        countryList = countriesFromDatabase;
        callback( countryList );
    }
    else
    {
        callback( countryList );
    }

}, function(err){
      console.log("all rows are processed");
});

它与 async.eachSeries 一起工作正常,但我希望它以异步方式工作。有什么建议吗?

  1. 从数据库中获取国家/地区
  2. 处理所有行

所以以下将起作用

function getCountries(callback) {
  console.log("open database here to get country list and then assign to below variable");
  callback(null,countriesFromDatabase);
}
getCountries(function(err, countriesFromDatabase) {
 // use countries in following async loop
  async.each(rowsArr, function(row, callback) {
    callback(null, row); //process row here
  }, function(err) {
    console.log("all rows are processed");
  });
});

它实际上做了它应该做的事情,所有一百行处理同时开始,并且它们正在传递 if 块。

您可能希望使用锁。 https://github.com/BorisKozo/node-async-locks

这样,您可以锁定国家/地区列表检查过程,以避免多个数据库连接。