事件发射器总是按照它们发射的顺序一个接一个地发射

时间:2015-05-04 01:35:37

标签: javascript node.js eventemitter

var events = require('events');                                                                                                                                                            
var eventEmitter = new events.EventEmitter();                                                                                                                                              

var ringBell = function ringBell()                                                                                                                                                         
{                                                                                                                                                                                          
 console.log('ring ring ring');                                                                                                                                                            
}                                                                                                                                                                                          

var lockDoor = function lockDoor()                                                                                                                                                         
{                                                                                                                                                                                          
console.log("lock door");                                                                                                                                                                  
}                                                                                                                                                                                          

eventEmitter.on("ringBell", ringBell);                                                                                                                                                     
eventEmitter.on("lockDoor", lockDoor);                                                                                                                                                     
eventEmitter.emit('ringBell');                                                                                                                                                             
eventEmitter.emit('lockDoor');

因此首先发出ringBell事件,然后发出lockDoor事件。

我的问题是,在发出lockDoor事件之前,ringBell事件处理程序是否先完成?

1 个答案:

答案 0 :(得分:0)

在这种情况下是的,但是如果你要在事件处理程序中添加更复杂的东西,比如异步数据库调用,那么它会在完成lockDoor事件处理程序之前启动ringBell事件处理程序