🥇 Eventos modulares.

El patron observador es utilizado comunmente para modularizar codigo. Un típico uso es separar la definición de la clase del evento emisor y de la emisión del evento en su propio módulo, pero permitir a los observadores ser definidos en el programa principal. Esto nos permite personalizar el comportamiento del modulo sin tener que cambiar el codigo del mismo.

En job.js utilizamos un modulo generico job que emite un evento complete despues de 1000 milisegundos. Sin embargo dentro de worker podemos personalizar el manejador de eventos del observador para que realice lo que queramos que realice cuando este complete su ejecución.

const EventEmmiter = require('events')
const Job extends EventEmmiter {
    constructor(args){
        super(args)
        this.on("start", () => {
            this.process()
        })
    }
    process(){
        setTimeout(() => {
            this.emit("complete", { completionTime: new Date() })
        }, 1000)
    }
}
module.exports = Job
const Job = require("./job.js")
const job = new Job();
job.on("complete", ({ completionTime }) => {
    console.log("El evento se completo en", completionTime)
})
job.emit("start")

Cuando ejecutamos node worker.js la logica personalizada perteneciente al evento complete sera executada desde worker.js. De esta forma podemos mantener el modulo job.js flexible. No hay necesidad de preparar ninguna logica para el evento complete. El consumidor del modulo puede tener multiples eventos en diferentes secciones del código. Estos pueden ser invocados multiples ocasiones utilizando .on o una sola ocasión mediante .once.

Emisores de eventos (event emmiters). Http.
comments powered by Disqus