【发布时间】:2019-06-03 00:34:32
【问题描述】:
我假设 Node.js 持续监听事件并在触发事件时异步处理监听代码。
我尝试使用“事件”模块定义自定义事件,该模块在脚本中手动发出。
var events = require('events');
var myEmitter = new events.EventEmitter();
myEmitter.on('someEvent', function(msg){
console.log(msg);
});
myEmitter.emit('someEvent', 'the event is emitted');
当我运行上述脚本时,进程仅在处理一次事件后终止。 Node.js 怎么知道以后不会有更多可以触发的事件?我已经看到“http”模块的 server.listen() 连续侦听传入连接,并且在获得第一个连接后不会终止。为什么我的代码的行为方式不同?
或者换句话说,我如何定义异步和连续监听的事件?
编辑:我还想知道意外发生的事件(例如,浏览器按钮单击、服务器获得连接等)如何在后台工作,以使程序连续运行而不会终止。
【问题讨论】:
-
在你的代码中,你只触发了一次事件?
-
没有任何异步会触发脚本中的事件。
-
顺便说一句,
EventEmitter是同步的,它只是一个用于管理订阅并用纯 JS 编写的小包装器。没有什么特别之处可以让进程保持运行 - 是server.listen()执行此操作。