【发布时间】:2018-06-09 03:17:51
【问题描述】:
我对 nodejs 相当陌生,为了保持我的代码简短,我希望我可以使用我包含在我的异步瀑布函数列表中的 .js 文件中的函数。我试图包含一个函数,但得到一个“TypeError:回调不是函数”异常或“无法读取未定义的属性‘Symbol(Symbol.toStringTag)’”。我已经搜索和搜索并找不到答案,但希望有人能给我最好的方法,就像回调和函数一样,我不确定最好的解决方案是什么。
希望我的代码是这样的:
var module1 = require('./lib/module1.js'),
module2 = require('./lib/module2.js');
async.waterfall([
module1.externalfunc1,
module2.externalfunc2
], function (err, result) {
if (err) {
console.log('ERROR: ');
console.log(err);
} else {
console.log('Completed streaming1');
console.log(result);
}
我的猜测是我应该把瀑布函数放在另一个函数中,比如 function(){module1.externalfunc;},function(){module2...
认为我对回调的理解不够好,因为我不确定外部函数是否会知道“回调”是什么,因为它在瀑布代码之外。但我必须相信这是可能的。
感谢您的帮助。
意思是说,我创建了一个定义了函数的 externalfunc1,我将其导出,所以在文件中有:
function externalfunc1(param1, callback){...}
module.exports = externalfunc1;
【问题讨论】:
-
如果您想说的内容与您的问题不同,那么只需使用“编辑”链接来编辑您的问题以修复它。
-
我怀疑你没有正确导出函数,你能分享
module1.js文件的内容吗? -
要直接使用外部函数,它们必须具有
async.waterfall()所期望的完全正确的调用签名(完全相同的参数)。如果他们不这样做,你必须将它们包装在另一个函数中。 -
谢谢,@asosnovsky 和 jfriend00,我在上面添加了我的编辑,它完全一样,一个有 2 个参数的函数,函数使用的 param1 和回调。仅导出函数名称。我需要
module.exports = externalfunc1(param1, callback)吗?
标签: javascript node.js asynchronous waterfall