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

Javascript 在nodejs中的事件处理程序之前调用事件发射器,javascript,node.js,events,event-handling,eventemitter,Javascript,Node.js,Events,Event Handling,Eventemitter,我在这里看到,在定义事件处理程序(和)之前,nodejs事件发射器被调用 当我尝试复制相同的事件时,不会处理任何事件 eventEmitter.emit('event'); eventEmitter.on('event', () => { console.log('event handled'); }); 当您将事件发射器放在事件处理程序之后时 “事件已处理”将被记录 这是错的吗?或者它仍然可以工作,因为它在一个模块中,并且有一种导入模块的方式允

我在这里看到,在定义事件处理程序(和)之前,nodejs事件发射器被调用

当我尝试复制相同的事件时,不会处理任何事件

    eventEmitter.emit('event');

    eventEmitter.on('event', () => {
        console.log('event handled');
    });
当您将事件发射器放在事件处理程序之后时 “事件已处理”将被记录


这是错的吗?或者它仍然可以工作,因为它在一个模块中,并且有一种导入模块的方式允许它工作?请解释一下。谢谢。

第44行上的事件发射位于绑定到ioChat的“连接”事件的处理程序内部,在绑定第181行上的eventEmitter的“获取所有用户”事件之前不会调用该事件。因此,即使调用事件的行位于第一位,也不会首先调用它

例如:

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');

第44行上的事件发射位于绑定到ioChat的“连接”事件的处理程序内部,在绑定第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');

那么您是说,当您导入在第18行导出的模块时,在客户端调用任何连接之前,首先“注册”处理程序?几乎是这样。注册不是在导入模块时发生的,而是在调用导出的函数时发生的。我想我现在明白了。如果我错了,请纠正我:在调用ioChat的“连接”事件之前,Nodejs已经在第181行“看到”了事件处理程序?嘿,请检查一下。谢谢。你是说,当你导入第18行导出的模块时,在客户端调用任何连接之前,处理程序首先“注册”了?几乎是这样。注册不是在导入模块时发生的,而是在调用导出的函数时发生的。我想我现在明白了。如果我错了,请纠正我:在调用ioChat的“连接”事件之前,Nodejs已经在第181行“看到”了事件处理程序?嘿,请检查一下。谢谢