Asincronismo en Javascript

Sebastian Catalan Araya
3 min readJun 16, 2021

--

Javascript de por si es un lenguaje asincrono de un solo hilo. Al decir que es de un solo hilo, lo que estamos indicando es que las intrucciones de nuestro codigo se van ejecutando una linea a la vez, pudiendo ser bloqueante si no usamos asincronismo.

Javascript para poder ejecutar asincronismo hace uso del event loop, este es el encargado de gestionar la asincronia en js.

Como hace esto?

Va ejecutando una linea a la vez, hasta que se encuentra con una asincrona. En cuanto esto sucede, entra en accion el event loop, que es el encargado de tomar esta linea para que javascript siga ejecutando las demas sin generar bloqueo.

La manera en que realiza esto es ejecutando las intrucciones en una pila call stack, una vez se encuentra una funcion asincrona le pasa a event loop un callback (que es una funcion que se ejecutara una vez terminen las instrucciones asincronas), event loop se encarga de ejecutar las lineas asincronas y colocar la funcion callback en una callback queue. Las que se ejecutaran por orden de encolamiento.

Tenemos 3 formas simples de manejar asincronismo en javascript:

Callback

Es una funcion que recibe como parametro otra funcion, la cual sera invocada una vez terminada las intrucciones.

Podemos llamar callbacks dentro de otros callbacks si asi fuera el caso. Lo unico de lo que deberiamos tener cuidado es de no llegar a una mala practica llamada callback hell, lo que es anidar muchos callback uno detras de otro.

Promesas

Como la palabra lo dice, es una promesa que retornara un valor, ya sea ahora o en un futuro, De cumplirse ciertas condiciones. O podemos retornar un error o mensaje en caso de que no se cumplan.

Async/await

Async await es una de las formas mas simple de manejar asincronismo en javascript. Permite ejecutar una funcion de forma asincrona muy parecido a como ejecutamos normalmente una funcion sincrona ordinaria.

Por detras async await trabaja basicamente con promesas.

Espero haber sido lo mas claro posible, tambien dejo en mi Github un repositorio dedicado a trabajar con asincronismo en javascrit:

https://github.com/catalanseb/asincronismo_javascript

--

--