JavaScript desde el principio ha sido y sigue siendo de un solo subproceso y sincrónico , lo que significa que se ejecuta una línea de código a la vez en el orden en que aparece.
Además del motor de JavaScript, hay otros motores y piezas de código en ejecución que también ejecutan JavaScript, como el motor de representación o la solicitud HTTP . Cuando el motor de JavaScript habla con el motor de renderizado para hacer un cambio en la página web o solicitar algunos datos, entonces toda esa comunicación se ejecutará asincrónicamente dentro del navegador, sin embargo , lo que sucede dentro del motor de JavaScript sigue siendo sincrónico.
A medida que se llaman las funciones, se ejecutan apiladas una encima de la otra y cuando terminan, abandonan la pila. Eso se llama la pila de ejecución . Al lado de la Pila de Ejecución hay otra lista dentro del Motor de JavaScript llamada cola de eventos. La cola de eventos está llena de eventos y notificaciones de eventos que podrían estar sucediendo. Entonces, cuando el navegador tiene un evento que debe notificarse al motor de JavaScript ( por ejemplo, un evento de clic que debe activar una función ) , se coloca en la cola de eventos, pero la cola solo será procesado cuando la pila de ejecución está vacía, en otras palabras, hasta que JavaScript termina de ejecutar el resto del código línea por línea.
- ¿Qué tan normal es pasar por los ciclos de 'amor-odio' cuando se codifica?
- ¿Cuáles son algunas de las mejores empresas de diseño web que tienen sitios codificados para algunas de las nuevas empresas más grandes?
- WHMCS en subdominio o subcarpeta?
- ¿Hay alguna prueba cuantificada de que .NET u otras tecnologías de Microsoft no son buenas para las startups web?
- Cómo diseñar su estructura de archivos PHP
Entonces, lo que sucede es que el navegador asíncronamente pone cosas en la cola de eventos , pero el código aún se ejecuta línea por línea sincrónicamente dentro de JavaScript.
Dado lo dicho, JavaScript era un lenguaje que no se tomaba muy en serio antes de la era AJAX. Solíamos confiar mucho más en otras tecnologías como Flash, que tenía la capacidad de cargar datos XML, por ejemplo.