我有三个文件:
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');
预期:
$ node listener.js
worked!
Done
实际:
$ node listener.js
Done
答案 0 :(得分:1)
要使其正常工作,您必须在同一Node.js进程中运行它们,为此,您可以创建一个新文件,并从那里要求您的侦听器和发射器。
// another-file.js
require('./listener');
require('./registration_handler.js');
运行此新文件应该会为您带来预期的结果:
$ node another-file.js
worked!
Done