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.
Por Lexas el 21 de Marzo de 2014
Por leocarrerab el 21 de Marzo de 2014
Por diegoug el 21 de Marzo de 2014
leocarrerab-blog :
sabes que si, yo aquí solo quería colocar el resultado como una muestra de control de flujo, nada mas.
Por juanvc123 el 21 de Marzo de 2014
Por Pablo el 24 de Marzo de 2014
Por diegoug el 24 de Marzo de 2014
Pablo-blog :
Exacto, Node.js es Javascript
Por diegoug el 24 de Marzo de 2014
Pablo-blog :
Uno de los temas que quiero tocar en este tipo de posts es la forma nativa de escribir Javascript enfocado para Node.
Ya hay muchas librerías de node que nos hacen la vida fácil, pero quien nos dice que esas librerías hacen realmente lo correcto? quien nos dice que serán mantenibles en nuestro código? quien dice que no tienen errores? es por esto que es muy importante aprender a escribir javascript en node de la forma correcta y nativa para no crear una dependencia.
Hay librerías populares, respaldadas, es bueno confiar en estas ya que una comunidad las respalda, pero es mucho mejor saber como están escritas y si quisiéramos hacer una librería como esas pues que podamos hacerla, no digo que inventemos la rueda de nuevo, pero si hay que saber como la inventaron.
Estos posts toma se enfoca en las bases del conocimiento como una buena practica para quien no sepa o tenga dificultades.
Para el próximo post les hablare de Eventos, esto si es mas nativo de node.
Por Abducted el 25 de Marzo de 2014
En efecto node.js es javascript, como jQuery también lo es, la cuestión es que lo que aportas es javascript sin ser especifico de node.js.
Por diegoug el 25 de Marzo de 2014
Abducted :
En efecto node.js es javascript, como jQuery también lo es, la cuestión es que lo que aportas es javascript sin ser especifico de node.js.
Puede ser un buen titulo, pero si miras el articulo esta etiquetado como javascript, lo que quiero dar a entender con el titulo, es que voy hacer exclusiva referencia a trabajar en Node.js.
En este caso, si no es con una librería de terceros pues los callback son el control de flujo cuando lo necesitas en Node.js.
Por hvallenilla el 14 de Diciembre de 2015
Gracias 1!!