Blog
Para la mayoría de los programadores, especialmente los que utilizan C, Java o Python, existe la perspectiva de que las acciones descritas en una línea de código terminarán antes de pasar a la siguiente sentencia. Sin embargo, en JavaScript es diferente gracias a los callbacks.
Ahora bien, comprender su uso y funcionamiento puede llegar a ser complejo; por ello intentaremos explicarlo de la forma más sencilla posible.
¿Qué significa callbacks?
En español significa “llamada de vuelta”. Aunque hay que aclarar que se trata solo de un nombre para hacer alusión a una forma de trabajar dentro de JS. Es decir, no existe siquiera una palabra reservada denominada callback.
No obstante, el concepto es útil cuando se precisa el resultado de funciones asíncronas para continuar el proceso y eventualmente terminar la tarea inicial; por ejemplo, cuando se requiere validar, buscar, procesar y guardar en una misma llamada.
La palabra asíncrono es un adjetivo que hace referencia aquello que no posee sincronía o no coincide en el tiempo. De manera que las funciones JS no devuelven de inmediato un resultado, sino que se toman su tiempo para producirlo. Por lo general los callbacks se utilizan al descargar archivos, lectura de archivos, conexión con base de datos, etc.
Funcionamiento
El comportamiento normal de la invocación a una función es que devuelva su valor de inmediato.
function operacion(num1, num2){ return num1 + num2; } var resultado = operacion(15,3); console.log (resultado); // muestra en pantalla 18
Pero las funciones asincrónicas que usan callbacks no devuelven nada enseguida.
De modo que, si llamamos a una función para descargar una imagen, por ejemplo, este demorará un poco, pero como no deseamos que el programa se detenga o bloquee durante la espera, debemos definir un código que se ejecute después de completarse.
Y es aquí donde utilizamos el callback, el cual pasará a la función de descarga y cuando haya finalizado pasará la foto o en su defecto mostrará un error.
var imagen = descarga(url); function resultado_final (error, imagen){ // Este es nuestro callback if(error == true){ console.error (“Hubo un error en la descarga”, error); }else{ console.log (“Descarga terminada”, imagen); } console.log (“la descarga comenzó”); }
Para comprender como funciona el callback debemos entender el orden que se ejecutan las sentencias mientras corre el programa. En este caso sucede de la siguiente manera:
- Primero, la función “resultado_final” se crea y se declara. Ten en cuenta que aún no ha sido invocada.
- Segundo, la “función descarga” es invocada y es pasada a “resultado_final” como su callback.
- Por último, se imprime en pantalla “La descarga comenzó”.
Nota: la función “resultado_final”, solo se ejecutará cuando la función descarga termine de hacer su tarea.
En resumen, la función “resultado_final” es básicamente una manera de almacenar algunas instrucciones que se llevarán a cabo en un momento posterior. Como puedes ver el orden de ejecución no es en forma descendente, sino que varía.
Hola,
en que momento ocurre esto?
“la “función descarga” es invocada y es pasada a “resultado_final” como su callback.”