Comprende JS: Callbacks

Bruno Pineda
sngular-devs
Published in
3 min readOct 20, 2018

Parte IX de la serie Comprende JS

Decidí apartar este tema fuera de funciones, porque creí importante primero entendieran los closures para entrar en “contexto” con los callbacks… entendieron el chiste… jajaja, bueno sino, lo entenderán después.

Recuerdan que las funciones en Javascript son de primera clase “First class functions” y es gracias a eso que podemos tratar a las funciones como cualquier otro tipo en Javascript, lo cual hace posible tratar a la función como una expresión y las expresiones pueden ser pasadas como parámetros en otras funciones, es decir podemos hacer esto…

Bien acabamos de usar un callback, dentro de los parámetros de la función getData(), los cuales son dos, recibe un string que ocupamos como criterio para regresar un dato en este caso una especie de “user id” y también recibe otro parámetro, una expresión de función, bien a esto tambien se le conoce como…

High order functions

Es una función que toma otra función como argumento o que retorna otra función.

Recuerdan que anteriormente vimos que la manera de auto ejecutar una expresión de función es a través de una IIFE, la cual usa al operador de grouping para hacerlo y de esta manera permitir que el Syntax parser entienda que es una función lo que ahí adentro se esta declarando.

Pues bien aquí la diferencia es que no la vamos a auto ejecutar, alguien la tiene que ejecutar cuando así sea necesario, sin embargo sucede lo mismo que en la IIFE, que al ser ingresada como parámetro en el operador de grouping que usa la función getData(), puede ser tratada como una declaración de función, disponible para ejecutar en cualquier momento, pero… en que momento la ejecutamos, para ello vamos a ver como se declara un callback.

Bien vamos por partes, primero vemos que declaramos la función getData(), después simulamos con un objeto data, los datos que tenemos que filtrar para encontrar el que coincida con el parámetro id, cuyo resultado se almacenara en la variable result y este ultimo es el que vamos a regresar…

Pero normalmente en una función para regresar un dato usamos la palabra reservada return, pero en un callback no lo vamos a regresar como parte del resultado de la función getData(), lo que hacemos es “ejecutar” nuestra función que declaramos anteriormente getData('user1', function (err, data){, recuerdan? Es justo en cb() donde la ejecutamos, para así continuar el contexto dentro de la ejecución de la función getData(), pero hagamos un zoom, en esa ejecución…

Donde null, es el error que cachamos en getData('user1', function(err,, ese mero y que se ocupa para en caso de que hubiese un error se envíe el objeto de error para que el if (err) lo atrape.

Después tenemos el objeto result, y es aquí donde nos regresa el registro encontrado y resultado de nuestra función getData().

Vamos a ver el código completo

En resumen los callbacks son funciones que están en otras funciones y que estas se ejecutan o invocan cuando hemos terminado con un proceso y queremos continuar con nuestro flujo principal de la otra función.

Conclusión

Los callbacks son usados para el manejo del flujo “asíncrono” y hacer que dicho flujo espere hasta que la función callback sea ejecutada y de esta manera garantizar que un proceso haya sido ejecutado antes de continuar.

Lectura recomendada: Promises beyond callbacks

<< episodio anterior || episodio siguiente >>

--

--