Descripción del método:
Evento de emitir, pasando varios parámetros opcionales a la tabla de parámetros del oyente del evento.
gramática:
La copia del código es la siguiente:
emitter.emit (evento, [arg1], [arg2], [...])
Recibir parámetros:
Tipo de evento de evento
arg1 ~ parámetros argn aprobados (múltiples)
ejemplo:
La copia del código es la siguiente:
var eventos = requirir ('eventos');
var emitor = new Events.EventEmitter ();
emitter.on ('someEvent', function (arg1, arg2) {
console.log ('oyente1', arg1, arg2);
})
emitter.on ('someEvent', function (arg1, arg2) {
console.log ('oyente2', arg1, arg2);
})
emitter.emit ('someEvent', 'byvoid', 1991);
Código fuente:
La copia del código es la siguiente:
EventEmitter.prototype.emit = function (type) {
Var er, Handler, Len, Args, I, oyentes;
if (! this._events)
this._events = {};
// Si no hay un oyente de eventos de 'error', entonces tire.
if (type === 'Error') {
if (! this._events.error ||
(util.isobject (this._events.error) &&! this._events.error.length)) {
er = argumentos [1];
if (this.domain) {
if (! er) er = new typeError ('no capturado, evento de "error" no especificado. ");
er.domainemitter = this;
er.domain = this.domain;
er.domainthrown = false;
this.domain.emit ('error', er);
} else if (er instanciaf error) {
arrojar er; // evento 'Error' no controlado
} demás {
lanzar typeError ('Evento de "error" no especificado "no especificado");
}
devolver falso;
}
}
handler = this._events [type];
if (util.isundefined (manejador))
devolver falso;
if (this.domain && this! == proceso)
this.domain.enter ();
if (Util.ISfunct (Handler)) {
switch (argumentos.length) {
// casos rápidos
Caso 1:
handler.call (esto);
romper;
Caso 2:
handler.call (esto, argumentos [1]);
romper;
Caso 3:
handler.call (esto, argumentos [1], argumentos [2]);
romper;
// Más lento
por defecto:
len = argumentos.length;
args = nueva matriz (len - 1);
para (i = 1; i <len; i ++)
args [i - 1] = argumentos [i];
handler.apply (esto, args);
}
} else if (util.isobject (handler)) {
len = argumentos.length;
args = nueva matriz (len - 1);
para (i = 1; i <len; i ++)
args [i - 1] = argumentos [i];
oyentes = handler.slice ();
len = oyentes.length;
para (i = 0; i <len; i ++)
oyentes [i] .apply (esto, args);
}
if (this.domain && this! == proceso)
this.domain.exit ();
devolver verdadero;
};