事件侦听器和事件发射器分开的文件

时间:2019-05-20 15:21:58

标签: node.js events event-handling dom-events

我有三个文件:

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

1 个答案:

答案 0 :(得分:1)

要使其正常工作,您必须在同一Node.js进程中运行它们,为此,您可以创建一个新文件,并从那里要求您的侦听器和发射器。

// another-file.js

require('./listener');
require('./registration_handler.js');

运行此新文件应该会为您带来预期的结果:

$ node another-file.js
worked!
Done