Comunidad de diseño web y desarrollo en internet online

Buenas prácticas en Node.js: Callback

Uno de los problemas más comunes al momento de programar en Node.js está relacionado con la programación asíncrona, y es que los usuarios no logran identificar el flujo del código. Esto está sucediendo porque hasta ahora los programadores se están enfrentando a este tipo de programación del lado del servidor. Es nuevo pero al mismo tiempo es mágico.

Para ayudarles a sortear este problema les voy a explicar la lógica del Callback. En el siguiente ejemplo les mostraré el problema con la manera en la que NO deben programar usando Node.js:

Código :

function suma(numero_uno,numero_dos){
   setTimeout(function(){
      var resultado = numero_uno + numero_dos;
      return resultado;
   }, 500);
}

var resultado = suma(2,5)

console.log(resultado);


En esta función que suma dos números, se toma 500 mili segundos en responder porque yo le coloqué un setTimeout con ese tiempo. Esto sirve para demostrar cuando una operación se demora, perfectamente una consulta demorada podría ser a la base de datos.

El asunto es el siguiente: el problema es que el código no se queda esperando a que la función responda, sigue derecho y cuando llega a console.log(resultado) este responde "undefined", entonces: cómo hacemos para que nuestro código espere a que la función responda y no siga derecho?

Para solucionar este problema vamos a usar un Callback:

Código :

function suma(numero_uno,numero_dos,callback){
   setTimeout(function(){
      var resultado = numero_uno + numero_dos;
      callback(resultado);
   }, 500);
}

suma(2,5,function(resultado){
   console.log(resultado);
})


En este ejemplo le agregamos a la función sumar el parámetro callback. Éste nos ayudará a retornar el resultado cuando esté listo, en cambio, la función que llama el resultado ya no la igualo a una variable como en el anterior, si no que invoco la función que trae el resultado. Cuando obtengo el resultado, invoco el console.log(resultado).

La idea es que usen sus funciones donde quieran y si tienen que hacer algo adicional con el resultado lo hagan después de recibir el callback.

¿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