Events

Clase 17 de 28Curso para Certificacion de Node.js con OpenJS Foundation 2023

Resumen

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.

      Events