我试图了解 Node.js 中的事件循环,以及事件编程的工作原理。鉴于我的模块导出了一个函数,该函数在event的回调中返回一些内容data
:
var http = require('http');
module.exports.send = function send(message) {
http.request({ hostname: 'google.com' }, function (res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
return chunk;
}
});
};
这怎么行?
如果我理解正确,http.request
是异步操作,这意味着:
- 执行调用
http.request
; - 程序控制立即返回 Node.js事件循环;
- 当请求最终返回某些东西(
data
事件被发出)时,可能在几分钟后,send
函数返回数据。不是以前。
因此result
应该是undefined
,但实际上不是:
var send = require('mymodule').send;
var result = send({});
console.log(result);