在nodejs中的事件处理程序之前调用事件发射器

Calling the event emitter before the event handler in nodejs

我正在经历 this code and I have seen the nodejs event emitter being called before the event handler was defined(this line and this line)。

当我尝试复制相同的内容时,没有处理任何事件。

    eventEmitter.emit('event');

    eventEmitter.on('event', () => {
        console.log('event handled');
    });

当您将事件发射器放在事件处理程序之后时 '处理的事件'被记录。

the code on GitHub错了吗?或者它是否仍然有效,因为它在一个模块中,并且有一种导入模块的方式允许它工作?请解释一下。谢谢。

第 44 行的事件发射是在绑定到 ioChat 的 "connection" 事件的处理程序内部,该事件不会在第 181 行绑定 eventEmitter 的 "get-all-users" 事件之前调用。所以即使调用事件的行在前,它不会先被调用。

示例:

eventEmitter.on('connection', () => {
  console.log('this should log second');
  eventEmitter.emit('someEvent');
});

eventEmitter.on('someEvent', () => {
  console.log('this should log third');
});

console.log('this should log first');
eventEmitter.emit('connection');