我有三个文件:
my_emitter.js :要共享的EventEmitter对象的实例(让我们将其引用为" myemitter"(
listerer.js :when
registration_handler.js :whend myemitter.emit((称为
听众没有收到发射事件。
使用以下代码,我首先运行node listener.js
,然后运行node registration_handler.js
秒。
my_emitter.js :
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
exports.emitter = myEmitter;
listerer.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');
控制台(来自Leculer.js(:
预期:
$ node listener.js
worked!
Done
实际:
$ node listener.js
Done
才能使其工作,您必须在同一node.js进程中运行它们,为此,您可以创建一个新文件,并且需要从那里开始的侦听器和发射器。
// another-file.js
require('./listener');
require('./registration_handler.js');
运行此新文件应为您提供预期的结果:
$ node another-file.js
worked!
Done