Explicar el mecanismo del bucle de eventos en Node.js

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")

Publicación traducida automáticamente

Artículo escrito por devaadi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *