【发布时间】:2018-02-05 13:58:59
【问题描述】:
在nodejs-中取如下代码:
console.log("Hello world");
process.stdin.on('connect', function() {
});
这会打印 Hello World 然后节点退出。但是当我用“数据”事件替换连接事件时,节点运行时不会退出。
这是为什么呢? EventEmitter 的数据事件有什么特别之处?它是否打开套接字连接?所以在 on() 方法中有如下代码 -:
function on(event, callback) {
if(event === 'data') {
//open socket
//do work
}
else {
//do non-socket work
}
}
是否有一个明确的答案来解释为什么向数据事件添加监听器“神奇地”打开一个套接字。
【问题讨论】:
-
“数据”事件没有什么特别之处。这是一个与任何其他事件一样的事件。
-
@ralphtheninja 太好了。那为什么当我们为数据事件附加监听器时nodejs运行时不退出,但当我们为任何其他事件附加监听器时退出
-
很难说。如果您能显示更多代码,那就太好了。
-
@ralphtheninja 我正在学习 Node.js。这就是我拥有的所有代码。只需将其粘贴并执行即可。然后将连接切换到数据并查看行为差异
-
哦,对了。这很可能是
process.stdin的实现细节。