为了账号安全,请及时绑定邮箱和手机立即绑定

回调不等待函数完成执行

回调不等待函数完成执行

泛舟湖上清波郎朗 2022-05-26 11:05:48
我有一个回调函数,它从数据库中返回一个对象。但是,在我的 async.waterfall 中,函数 'external' 不会等待对象完全加载,这意味着传入时它是未定义的。这意味着我的最终错误是TypeError: Cannot read property 'replace' of undefined. 我究竟做错了什么?function loadModelInstance (name, callback) {  Model.findOne({ name: name }, function (_err, result) {    if (result) {      return callback(_err, result.content)    }   })}function generatedNow (modelInstance) {  generatedKeys = generatedKeys.concat(getAllMatches(generatedRegexp, modelInstance.replace(/(\n|\r)/g, '')));}async.waterfall(    [      function loadTemplate (wfaCallback) {        loadModelInstance(name, function (_err, modelInstance) {          wfaCallback(_err, modelInstance)        })      },      function external (modelInstance, wfaCallback) {        generatedNow(tracking, message, modelInstance, placeholders, function (err, updatedPlaceholders) {        })      },    ],    function (err) {        // Node.js and JavaScript Rock!    });
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

您能否提供更多详细信息。你在哪里调用“generateNow”函数。我没有看到“generateNow”的函数调用。


看起来您没有正确使用参数顺序。下面的代码应该可以工作。


async.waterfall(

  [

    function loadTemplate(wfaCallback) {

      loadModelInstance(name, function(_err, modelInstance) {

        wfaCallback(_err, modelInstance);

      });

    },


    function external(err, modelInstance, wfaCallback) {

      generatedNow(modelInstance, tracking, message, placeholders, function(

        err,

        updatedPlaceholders

      ) {});

    }

  ],

  function(err) {

    // Node.js and JavaScript Rock!

  }

);


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信