nodejs node loop event javascript node.js event-loop

javascript - loop - Comprensión del bucle de eventos Node.js(con un diagrama)



nodejs (1)

He leído this y this , he visto this ...

He hecho un diagrama de cómo lo entiendo:

  • Las devoluciones de llamada (funciones) de Javascript pueden estar presentes en la current queue , check queue , close callbacks queue , timers queue y I/O callbacks queue
  • El código Js se ejecuta solo desde la current queue una función (tarea / trabajo) a la vez.
  • El código Js ejecutado en este momento puede agregar microtasks (trabajos) a la current queue que se ejecutará después de sí mismo y macrotasks (tareas) a la check queue . Puede agregar tareas a otras colas de manera indeterminada pidiéndole a la API que lo haga.
  • Idle, prepare fase de Idle, prepare se usa para algunos negocios internos de nodo js (tal vez como recolección de basura).
  • Poll fase de Poll sondea los subprocesos del grupo de subprocesos y llena las colas con devoluciones de llamada adecuadas.
  • Idle, prepare fases Idle, prepare y de poll no tienen colas para las devoluciones de llamada js asociadas con ellas.
  • (cuatro) Los hilos en el thread pool son todos idénticos y no tienen especialización.
  • El bucle de eventos toma y ejecuta las tareas una por una de cada cola hasta que está vacío y luego pasa a la siguiente cola.
  • Las tareas en las colas no tienen ningún trabajo (microservicios) asociado con ellas. Los trabajos se crean solo durante la ejecución de una tarea u otro trabajo y están presentes solo en la current task queue .

¿Es correcto entender eso o me estoy perdiendo algo?

El archivo .pptx de MS Power Point con el diagrama se puede encontrar here .


El diagrama parece bastante complicado. Encuentro una analogía de rey bastante perfecta en este contexto para tener un nivel de comprensión gris sobre cómo funciona el ciclo de eventos.

Imagina que el código que quieres ejecutar es un rey y un nodo es el ejército de servidores.

El día comienza cuando un sirviente despierta al rey y le pregunta si necesita algo. El rey le da al sirviente una lista de tareas y vuelve a dormir un poco más. El servidor ahora distribuye esas tareas entre sus colegas y se ponen a trabajar.

Una vez que un sirviente termina una tarea, se alinea fuera del cuarto de reyes para informar. El rey deja entrar a un sirviente a la vez, y escucha las cosas que informa. A veces el rey le dará al sirviente más tareas al salir.

La vida es buena, porque los sirvientes del rey llevan a cabo todas sus tareas en paralelo, pero solo informan con un resultado a la vez, para que el rey pueda concentrarse.

El rey aquí es el proceso del nodo principal. Así es como se dice que los nodejs son de un solo hilo pero asíncronos.