Ejemplo de síncrono y asíncrono
Asincronía, mas simple de lo que parece
Call Stack
La pila pila de llamadas (Call Stack en inglés) es una estructura tipo LIFO (Último en entrar, Primero en Salir) en que la van entrando funciones y se va ejecutando.
Web Api
Pero claro, que ocurre si en el Call Stack entra un evento onClick y no se ejecuta nunca, al no hacer clic sobre dicho elemento, o un setTimeout de 100000 segundos o una llamada a una Api que tarda mucho, ¿se para el programa?. No, esta es la verdadera magia de JavaScript, estas funciones (timers de JavaScript, eventos generados por clics, o HTTP request) las gestiona el Web Api, siguiendo la pila de llamadas con la siguiente instrucciones.
Callback Queue
Resumiendo
En resumen, las funciones entran en el Call Stack, y se ejecutan, si una de ellas espera un evento, por ejemplo un clic, la pasamos a Web Api para no parar el Call Stack y cuando tenemos la respuesta se pasa al Callback Queue, que la insertará en el Call Stack para que se ejecute dicha respuesta.
Para entenderlo mejor podemos utilizar la herramienta web loupe que nos muestra como se van ejecutando las ordenes en JavaScript. Nos permite pausar la ejecución, cambiar los tiempos para que la ejecución sea mas lenta y podamos seguir paso a paso lo que ocurre.
No hay comentarios:
Publicar un comentario