首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用module.exports的nodejs回调

使用module.exports的nodejs回调
EN

Stack Overflow用户
提问于 2016-04-16 08:49:45
回答 3查看 5.7K关注 0票数 1

我从NodeJS开始,并试图了解回调与module.exports之间的关系。

我有两个NodeJS文件。

  1. msg接收输入字段msg并将结果传回。通过module.exports公开s1.js
  2. start.js包含s1.js (通过请求)并接收我想要在程序中使用的结果

start.js

代码语言:javascript
复制
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

代码语言:javascript
复制
module.exports.test=function test(msg,result){
    result="Hello "+msg;
    console.log("Inside s1.js - "+result);
};

当我执行start.js时,结果如下

代码语言:javascript
复制
Inside s1.js - Hello Leon
result undefined
end

正如预期的那样,结果是未定义的,因为s1.test的回调尚未完成。

我不明白的是,为什么s1测试的回调始终没有实现。

有什么想法吗?

谢谢莱昂

EN

Stack Overflow用户

发布于 2016-04-16 09:08:38

你不能打你的电话。回调只是作为函数的参数给出的普通函数。

您的代码不调用回调。您正在尝试为回调设置一个值。修正了s1.js的版本:

代码语言:javascript
复制
module.exports.test=function test(msg,result){
    result(null, "Hello "+msg);
    console.log("Inside s1.js - "+result);
};

这样你就可以叫回电话了。我们需要传入null,因为您已经将回调函数定义为function(err, result)。它有两个参数,第一个参数是err,我们没有运行错误,所以我们只传递null

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36662111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档