我从NodeJS开始,并试图了解回调与module.exports之间的关系。
我有两个NodeJS文件。
start.js
var s1=require('./s1.js');
var r1;
s1.test("Leon", function(err, result) {
if (err){console.log("Error occurred "+err);}
console.log("Callback after s1.test execution "+result);
r1=result;
}
);
console.log("result "+r1);
console.log("end");s1.js
module.exports.test=function test(msg,result){
result="Hello "+msg;
console.log("Inside s1.js - "+result);
};当我执行start.js时,结果如下
Inside s1.js - Hello Leon
result undefined
end正如预期的那样,结果是未定义的,因为s1.test的回调尚未完成。
我不明白的是,为什么s1测试的回调始终没有实现。
有什么想法吗?
谢谢莱昂
发布于 2016-04-16 09:08:38
你不能打你的电话。回调只是作为函数的参数给出的普通函数。
您的代码不调用回调。您正在尝试为回调设置一个值。修正了s1.js的版本:
module.exports.test=function test(msg,result){
result(null, "Hello "+msg);
console.log("Inside s1.js - "+result);
};这样你就可以叫回电话了。我们需要传入null,因为您已经将回调函数定义为function(err, result)。它有两个参数,第一个参数是err,我们没有运行错误,所以我们只传递null。
https://stackoverflow.com/questions/36662111
复制相似问题