

发射event事件,传递若干可选参数到事件监听器的参数表。
语法:
 代码如下:
emitter.emit(event, [arg1], [arg2], [...])
接收参数:
event 事件类型
arg1 ~ argN 传递的参数(多个)
例子:
 代码如下:
var events = require('events');
var emitter = new events.EventEmitter();
 
emitter.on('someEvent', function(arg1, arg2){
 console.log('listener1', arg1, arg2);
})
 
emitter.on('someEvent', function(arg1, arg2){
 console.log('listener2', arg1, arg2);
})
 
emitter.emit('someEvent', 'byvoid', 1991);
源码:
 代码如下:
EventEmitter.prototype.emit = function(type) {
 var er, handler, len, args, i, listeners;
 if (!this._events)
 this._events = {};
 // If there is no 'error' event listener then throw.
 if (type === 'error') {
 if (!this._events.error ||
 (util.isObject(this._events.error) && !this._events.error.length)) {
 er = arguments[1];
 if (this.domain) {
 if (!er) er = new TypeError('Uncaught, unspecified "error" event.');
 er.domainEmitter = this;
 er.domain = this.domain;
 er.domainThrown = false;
 this.domain.emit('error', er);
 } else if (er instanceof Error) {
 throw er; // Unhandled 'error' event
 } else {
 throw TypeError('Uncaught, unspecified "error" event.');
 }
 return false;
 }
 }
 handler = this._events[type];
 if (util.isUndefined(handler))
 return false;
 if (this.domain && this !== process)
 this.domain.enter();
 if (util.isFunction(handler)) {
 switch (arguments.length) {
 // fast cases
 case 1:
 handler.call(this);
 break;
 case 2:
 handler.call(this, arguments[1]);
 break;
 case 3:
 handler.call(this, arguments[1], arguments[2]);
 break;
 // slower
 default:
 len = arguments.length;
 args = new Array(len - 1);
 for (i = 1; i < len; i++)
 args[i - 1] = arguments[i];
 handler.apply(this, args);
 }
 } else if (util.isObject(handler)) {
 len = arguments.length;
 args = new Array(len - 1);
 for (i = 1; i < len; i++)
 args[i - 1] = arguments[i];
 listeners = handler.slice();
 len = listeners.length;
 for (i = 0; i < len; i++)
 listeners[i].apply(this, args);
 }
 if (this.domain && this !== process)
 this.domain.exit();
 return true;
};
 
