在递归函数中异步每个系列

Async eachseries within recursive function

我尝试了以下代码片段:

var arrVal = [[1,2],[[2,3],[4,5]],3,4];
var async = require('async');

var recurse = function(arr , callback) {
async.eachSeries(arr, function(eachVal, callback) { 
    if(typeof eachVal == "object") {
        recurse(eachVal);
    }
    else {
        console.log(eachVal);
        callback(null);
    }
}, callback);};

recurse(arrVal);

预期打印 arrVal 数组中存在的所有数字,但我只得到 1,2(数组第 0 个索引的数字)。

我做错了什么? 有人可以指导更好的方法来实现我想要得到的东西吗?

注意:我希望异步执行此操作

这在您的代码中运行良好,在 if 条件下没有回调。 如果你想要一个异步的方式,你可以使用 async.each 而不是 async.eachSeries async.each

async.eachSeries的不同之处在于,每次迭代都会等待异步操作完成,然后再开始下一个。

  var arrVal = [[1,2],[[2,3],[4,5]],3,4];
  var async = require('async');

  var recurse = function(arr , callback) {
  async.eachSeries(arr, function(eachVal, each_cb) { 
  if(typeof eachVal === "object") {
      recurse(eachVal);
      each_cb()
  }
  else {
      console.log(eachVal);

      each_cb(null);
  }
}, callback);};

recurse(arrVal);