Node.js事件处理顺序

时间:2012-03-07 17:43:21

标签: events node.js

鉴于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()的情况?

1 个答案:

答案 0 :(得分:5)

是的,所有事件的处理顺序与代码中显示的顺序相同。在调用emit之后立即触发事件。您可以在EventEmmiter.emit source code中看到它。但是将应用程序逻辑绑定到事件顺序并不是最好的方法。