Aprende a dominar EventEmitter en Node.js con un enfoque práctico y directo. Aquí verás cómo escuchar y emitir eventos, y cómo cerrar el proceso tras una condición específica, tal como se pide en el task 7.x. Todo se apoya en la lógica descrita y en la documentación oficial del core de Node.js para eventos.
¿Qué cubre el dominio de eventos en Node.js?
Este dominio representa un 11% de la prueba y se enfoca en la abstracción de EventEmitter, su creación y el control de eventos. El único ejercicio evaluado es el task 7.1/7.x, donde debes demostrar manejo sólido de emisión y escucha de eventos.
- Enfócate en crear un EventEmitter y gestionar su ciclo de eventos.
- Practica cómo escuchar con métodos del tipo listener.
- Practica cómo emitir usando la función correspondiente.
- Asegura un control de flujo con un contador y una salida limpia del proceso.
- Usa la documentación oficial de eventos en Node.js como referencia principal.
¿Qué habilidades necesitas con EventEmitter?
- Crear instancias de EventEmitter del módulo de eventos.
- Escuchar eventos con un patrón tipo
.on('evento', handler).
- Emitir eventos con
.emit('evento').
- Contabilizar invocaciones con un contador para detonar acciones.
- Cerrar el proceso cuando corresponde con process.exit.
¿Qué pide exactamente el task 7.x?
El README indica: la función answer recibe una instancia de EventEmitter como argumento y debe:
- Escuchar el evento jump.
- Al recibir jump, emitir el evento run.
- Salir del proceso cuando jump se emita tres veces.
¿Cómo resolver el task 7.x paso a paso?
La función answer recibe el parámetro emitter. Todo ocurre dentro de esa función. No se requieren datos adicionales en los eventos.
¿Cómo escuchar jump y emitir run?
- Inicializa un contador para llevar las veces que llega jump.
- Registra un listener para 'jump'.
- Al ejecutar el listener: incrementa el contador, emite 'run', y continúa el flujo.
- No escuches 'data': no se pide ningún parámetro.
¿Cuándo salir del proceso?
- Después de cada jump, verifica si el contador es igual a tres.
- Si es tres, invoca process.exit para terminar.
- No envíes payload en 'run' ni en 'jump': no es necesario.
¿Qué estructura tiene la función answer?
- Firma: una función answer que recibe
emitter.
- Lógica interna: contador + listener de 'jump' +
.emit('run') + condición para process.exit.
- Resultado: se emite 'run' tras cada 'jump' y el proceso cierra al tercer 'jump'.
¿Cómo probar y depurar sin salirte del alcance?
Puedes simular el flujo para validar tu solución, solo como prueba local; al final, deja únicamente la implementación dentro de answer.
¿Cómo simular eventos para validar la lógica?
- Crea
ee = new EventEmitter() desde el módulo de eventos.
- Agrega un listener a 'run' que emita 'jump' para retroalimentar el ciclo.
- Ejecuta
answer(ee) para conectar la lógica pedida.
- Emite el primer 'jump' para iniciar la secuencia.
- Opcional: imprime
console.log('jump', contador) para observar llamadas y confirmar tres ocurrencias.
¿Qué buenas prácticas aplicar al probar?
- Verifica que se registró el listener de 'jump' correctamente.
- Asegura que
.emit('run') se ejecute tras cada jump.
- Confirma que process.exit se llama solo cuando el contador llega a tres.
- Elimina el código de prueba y conserva solo la lógica en answer.
¿Te surgieron atajos o trucos para organizar listeners y contadores con EventEmitter? Comparte tu enfoque en los comentarios y ayudemos a otros a mejorar su solución.