【问题标题】:Async eachseries within recursive function递归函数中的异步每个系列
【发布时间】:2019-01-07 13:16:38
【问题描述】:

我试过下面的代码sn-p:

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

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

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

【问题讨论】:

    标签: javascript node.js asynchronous async.js


    【解决方案1】:

    这在您的代码中运行良好,在 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);
    

    【讨论】:

    • 啊,我的错!忘记添加回调了。
    猜你喜欢
    • 2018-02-24
    • 2023-03-11
    • 2016-09-21
    • 1970-01-01
    • 2021-12-12
    • 2017-06-27
    • 2023-03-23
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多