JavaScript es un lenguaje asincrónico de subproceso único que no bloquea y utiliza el concepto de bucle de eventos para que funcione de forma asíncrona, incluso si es de un solo subproceso.
Característica: el bucle de eventos es responsable de enviar funciones desde la cola de eventos a la pila para su procesamiento cuando se vacía.
Mecanismo de bucle de eventos: hay algunas funciones en javascript que pueden ejecutarse en la API del navegador en lugar de en V8. Las funciones o llamadas que no están presentes en V8 se envían a la API del navegador y luego funcionan como un solo hilo tal como se ejecutan. Después de su ejecución, la salida resultante se envía a la cola de eventos. El bucle de eventos es responsable de enviar los resultados de las funciones a la pila para su procesamiento cuando se vacía.
Ejemplo: Entendámoslo usando un ejemplo simple.
Javascript
console.log("Hello"); setTimeout(console.log("Hello-2"), 3000); function sum(a, b) { console.log(a + b); } sum(2, 4);
Producción:
Hello 6 Hello-2
Explicación: El flujo de ejecución comienza desde
console.log("Hello");
y en el momento en que llega a la función setTimeout
setTimeout(console.log("Hello-2"), 3000);
Envía la función a la API del navegador donde la función comienza a ejecutarse, mientras tanto, se ejecuta la siguiente operación en la pila, que es
sum(2, 4) ;
Luego, cuando la función setTimeout completó su ejecución, la envía a la cola de eventos y espera la finalización de las operaciones en ejecución en la pila, cuando la pila finaliza su operación, el bucle de eventos envía la función setTimeout de la cola a la pila, y Stack finalmente lo procesó.
--Stack-- sum(2, 4) setTimeout(console.log("Hello-2"), 3000) console.log("Hello")