【发布时间】:2019-05-20 15:21:57
【问题描述】:
我有三个文件:
my_emitter.js:要共享的 EventEmitter 对象的实例(我们将其称为“myEmitter”)
listener.js:myEmitter.on() 被调用的地方
registration_handler.js:在哪里调用 myEmitter.emit()
监听器没有接收到发出的事件。
使用以下代码,我首先运行node listener.js,然后运行node registration_handler.js。
my_emitter.js:
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
exports.emitter = myEmitter;
listener.js:
const emitterFile = require('./my_emitter');
const myEmitter = emitterFile.emitter;
myEmitter.on('test', (res) => {
console.log('worked!');
});
//within 5s, let's run registration_handler.js to emit the event
setTimeout(console.log, 5000, 'Done');
registration_handler.js:
const emitterFile = require('./my_emitter');
const myEmitter = emitterFile.emitter;
myEmitter.emit('test');
控制台(来自 listener.js):
预期:
$ node listener.js
worked!
Done
实际:
$ node listener.js
Done
【问题讨论】:
-
您正在运行 2 个不同的节点进程(无论它们使用什么文件),所以您不会得到 the
expected。有消息队列来处理你(我猜)试图实现的目标 -
@1556089774 我明白了。是因为每个节点进程都在创建一个唯一的
EventEmitter()实例吗?谢谢! -
每个
node进程都有自己的私有内存,所以是的
标签: node.js events event-handling dom-events