Comunidad de diseño web y desarrollo en internet

Buenas prácticas en Node.js: events y channels

Hola, en este post les voy a mostrar una de las bondades que tiene Node.js y es la capacidad de emitir eventos a canales.

En principio esto nos sirve para delegar, eso significa que podemos pasarle datos a un canal y continuar con nuestro código, el canal apenas obtenga los datos trabajará de forma paralela a mi código. Esto es mágico ya que podrías delegar y no preocuparte por el tiempo de espera.

Código :

var events  = require('events');
var channel = new events.EventEmitter();

channel.on('suma', function(numero_uno,numero_dos){
    var resultado = numero_uno + numero_dos;
    console.log(resultado);
});

channel.on('multiplicacion', function(numero_uno,numero_dos){
    var resultado = numero_uno * numero_dos;
    console.log(resultado);
});

channel.on('division', function(numero_uno,numero_dos){
    setTimeout(function(){
        var resultado = numero_uno / numero_dos;
        console.log("un segundo mas tarde ",resultado);
   }, 1000);
});

channel.emit('division',9,4);
channel.emit('suma',5,7);

var numero_uno = 8;
var numero_dos = 9;

var a = numero_uno + numero_dos;
var b = numero_uno * numero_dos

channel.emit('multiplicacion',a,b);

Resultado:
  • 12
  • 1224
  • un segundo mas tarde 2.25


En el anterior ejemplo creé tres canales: suma, multiplicación y división, en ese orden, pero al primero que le pasé datos fue a división y sin embargo éste responde un segundo después porque tiene un setTimeout para demostrarles la demora, :o pero esto no es problema ya que mi código sigue trabajando y emitiendo a otros canales sin bloquearse, recuerden que apenas emitimos datos a un canal ya estamos delegando.

Con esto se podrían procesar estadísticas, ya que podrías emitir el resultado de tu código a un canal para que éste mire a la base de datos resultados similares, compare y guarde una estadística.

Ya con esto te dejé muchas cosas en qué pensar y la idea es que dejes volar tu imaginación para ver en qué puedes usar este gran poder.

Algo que tienes que tener en cuenta al momento de delegar es que no puedes esperar una respuesta por parte del canal, ya que simplemente estás emitiendo datos para que sean procesados en otra parte del código.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate