Node.js v0.6.19 Manual & Documentación
Tabla de Contenidos
- Eventos
- events.EventEmitter
- emitter.addListener(event, listener)
- emitter.on(event, listener)
- emitter.once(event, listener)
- emitter.removeListener(event, listener)
- emitter.removeAllListeners(event)
- emitter.setMaxListeners(n)
- emitter.listeners(event)
- emitter.emit(event, [arg1], [arg2], [...])
- Event: 'newListener'
Eventos#
Muchos objetos en Node emiten eventos: un net.Server
emite un evento cada vez que se establece una conexión, un fs.readStream
emite un evento cuando se abre un fichero. Todos los objectos que emiten eventos son instancias de events.EventEmitter
.
Puedes usar este módulo haciendo require("events");
Normalmente, los nombres de los eventos siguen la notacion camel-case, sin embargo, no hay ninguna restricción en este aspecto y cualquier cadena será aceptada.
Se pueden adjuntar funciones a objetos, para que sean ejecutadas cuando se emita un evento. Estas funciones reciben el nombre de listeners.
events.EventEmitter#
Para usar la clase EventEmitter, haz de importarla
haciendo require('events').EventEmiter
.
Cuando una instancia de la clase EventEmitter se encuentra con un error, la acción típica es emitir un evento de error. Los eventos de error son tratados como un caso especial en node. Si no tiene un listener asociado la acción por defecto será imprimir la traza de la pila y salir del programa
Todos los EventEmitters emite el evento 'newListener'
cuando se añaden nuevos listeners.
emitter.addListener(event, listener)#
emitter.on(event, listener)#
Añade un listener al final del array de listeners para el evento espeficicado
server.on('connection', function (stream) {
console.log('someone connected!');
});
emitter.once(event, listener)#
Añade un listener al evento. El listener se invocará sólo la primera vez que se dispara el evento. luego se elimina.
server.once('connection', function (stream) {
console.log('Ah, we have our first user!');
});
emitter.removeListener(event, listener)#
Elimina un listener del array de listeners asociado al evento especificado Atención: modifica el indice del array de listeners
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
emitter.removeAllListeners(event)#
Elimina todos los listeners del array de listeners asociado al evento especificado
emitter.setMaxListeners(n)#
Por defecto los EventEmitters imprimirán un warning si se le añaden más de 10 listeners. Este comportamiento por defecto ayuda a encontrar memory leaks. Obviamente no todos los EventEmitters deberían limitarse a 10. Esta función permite incrementar este valor. Use cero para establecer un valor ilimitado.
emitter.listeners(event)#
Devuelve un array de listeners asociado al evento especificado. Este array puede ser manipulado, por ejemplo, eliminando un listener.
server.on('connection', function (stream) {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection')); // [ [Function] ]
emitter.emit(event, [arg1], [arg2], [...])#
Llama a cada uno de los listeners en el orden en el que fueron pasados por parámetros
Event: 'newListener'#
function (event, listener) { }
Este evento es emitido cada vez que se añade un nuevo listener.