Node.js事件处理顺序

nab*_*nab 4 events node.js

给定Node.js中的一些EventEmitter实例,是否绝对保证所有事件的处理顺序与它们在代码中出现的顺序相同?

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();
Run Code Online (Sandbox Code Playgroud)

是否会出现doTaskB()以前开始的情况doTaskA()

Vad*_*hev 5

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