我有一个回调函数,它从数据库中返回一个对象。但是,在我的 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!
}
);
添加回答
举报
0/150
提交
取消