El patrón de suscripción de publicación en JavaScript

Blog

El patrón de suscripción de publicación en JavaScript

El patrón Publisher / Subscriber, o PubSub para abreviar, es un patrón que nos permite crear módulos que pueden comunicarse entre sí sin depender directamente unos de otros.



De esta manera, cualquiera de las partes puede cambiar por completo y no afectar a la otra. Además, esto funciona para operaciones sincrónicas y asincrónicas. Lo que significa que dos aplicaciones completamente diferentes también pueden usar el mismo patrón para comunicarse.






Implementación

Lo siguiente se ejecuta en Node.js, pero al cambiar la estrategia de importación / exportación se puede ejecutar fácilmente en un navegador. Muestra cómo un objeto agrega elementos a una lista en un intervalo mientras que otro imprime los resultados de la lista periódicamente.



En primer lugar, el editor debe construirse primero (en publisher.js ):



|_+_|

Esto podría ser aún más simple, pero opté por adoptar un enfoque que admita cualquier número de editores / suscriptores, no solo uno.






Luego, se puede construir el objeto para recibir las notificaciones (en printer.js ):

cadena de bloques de alto rendimiento (hpb)
|_+_|

Finalmente, se puede crear un objeto para crear mensajes que notifique al editor llamado objectA.js :

|_+_|

Ahora todos pueden ejecutarse a través de un script de inicio básico llamado init.js :

|_+_|

Los resultados de correr nodo init.js debería ser algo como esto después de unos segundos:

|_+_|

Agregar más editores

Lo anterior es algo útil ya que objectA.js e printer.js se mantienen completamente separados, aunque este patrón realmente comienza a ser útil cuando se usan muchos objetos juntos.

Por ejemplo, aquí está ** objectB.js ** que es similar a objectA, pero imprime un mensaje diferente a una velocidad más rápida:

mejor ide para swift
|_+_|

Ahora solo inicializa esto en init.js y todo funcionará:

|_+_|

Los resultados de correr nodo init.js debería ser algo como esto después de unos segundos:

|_+_|

Por lo tanto, la funcionalidad del sistema se incrementó sin tener que modificar ningún otro archivo que no sea el script recién creado y el script de inicio. Es importante recordar que el editor puede extenderse para aceptar un objeto, más argumentos, etc. Lo que hace que esta estrategia sea aplicable a cualquier código.

#javascript # node-js