首页 > 解决方案 > 回调函数在 async.foreachlimit 上的 watefall 中未按预期工作

问题描述

回调函数在 async.for 每个限制的瀑布中未按预期工作。当我删除那个 rest api 调用并且如果我调用callback(null,arg2)它按预期工作时,我认为回调函数或以下代码中的某些 api 调用存在问题。

var async = require("async");
var users = [1, 2, 3, 45]; // Initialize user array or get it from DB
var e = [];
var unirest = require("unirest");
var data = function() {
  return new Promise((resolve, reject) => {
    async.forEachLimit(
      users,
      1,
      function(user, userCallback) {
        async.waterfall(
          [
            function(callback) {
              console.log(user);
              callback(null, user);
            },
            function(arg1, callback) {
              console.log(arg1);
              callback(null, arg1);
            },
            function(arg2, callback) {
              unirest
                .get("http://dummy.restapiexample.com/api/v1/employee/1")
                .end(function(response) {
                  if (response.error) callback("null", "data");
                  else callback(null, arg2);
                });
            }
          ],
          function(err, result) {
            if (err) {
              console.log("err");
              reject(e);
            } else {
              console.log("done", result);
              e.push(result);
              userCallback();
              resolve(e);
            }
          }
        );
      },
      function(err, result) {
        console.log("User For Loop Completed", err, result);
      }
    );
  });
};

我得到的输出为

在此处输入图像描述

预期输出为

在此处输入图像描述

标签: node.jsfor-loopasynchronouswaterfall

解决方案


推荐阅读