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

时间:2018-07-31 08:02:38

标签: javascript node.js asynchronous async.js

我尝试了以下代码段:

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个索引的数字)。

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

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

1 个答案:

答案 0 :(得分:2)

这在您的代码中正常工作,并且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);