Methodenbeschreibung:
Ein Ereignisereignis ausgeben und mehrere optionale Parameter an die Parameterliste des Ereignis-Listeners übergeben.
Grammatik:
emitter.emit(event, [arg1], [arg2], [...])
Empfangsparameter:
Ereignisereignistyp
arg1 ~ argN Übergebene Parameter (mehrere)
Beispiel:
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);
Quellcode:
EventEmitter.prototype.emit = Funktion(Typ) {
var er, handler, len, args, i, listeners;
if (!this._events)
this._events = {};
// Wenn es keinen „Fehler“-Ereignis-Listener gibt, dann werfen.
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, nicht spezifiziertes "Fehler"-Ereignis.');
er.domainEmitter = this;
er.domain = this.domain;
er.domainThrown = false;
this.domain.emit('error', äh);
} else if (äh Instanz eines Fehlers) {
werfen äh; // Nicht behandeltes „Fehler“-Ereignis
} sonst {
throw TypeError('Unabgefangenes, nicht spezifiziertes "Fehler"-Ereignis.');
}
return false;
}
}
handler = this._events[type];
if (util.isUndefined(handler))
return false;
if (this.domain && this !== Prozess)
this.domain.enter();
if (util.isFunction(handler)) {
switch (arguments.length) {
// schnelle Fälle
Fall 1:
handler.call(this);
Pause;
Fall 2:
handler.call(this, arguments[1]);
Pause;
Fall 3:
handler.call(this, arguments[1], arguments[2]);
Pause;
// langsamer
Standard:
len = arguments.length;
args = new Array(len - 1);
für (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);
für (i = 1; i < len; i )
args[i - 1] = arguments[i];
listeners = handler.slice();
len = listeners.length;
für (i = 0; i < len; i )
listeners[i].apply(this, args);
}
if (this.domain && this !== Prozess)
this.domain.exit();
return true;
};