鉴于EventEmitter中有一些Node.js实例,是否绝对保证所有事件的处理顺序与代码中出现的顺序相同?
var EventEmitter = require('events').EventEmitter;
var inherits = require('util').inherits;
var Emitter = function () {
EventEmitter.call(this);
var that = this;
this.test = function () {
that.emit('eventA');
that.emit('eventB');
}
};
inherits(Emitter, EventEmitter);
var emitter = new Emitter();
emitter.on('eventA', function () {
doTaskA();
});
emitter.on('eventB', function () {
doTaskB();
});
emitter.test();
doTaskB()
之前是否会出现doTaskA()
的情况?
答案 0 :(得分:5)
是的,所有事件的处理顺序与代码中显示的顺序相同。在调用emit之后立即触发事件。您可以在EventEmmiter.emit source code中看到它。但是将应用程序逻辑绑定到事件顺序并不是最好的方法。