Sé que la función de devolución de llamada de setTimeout , setInterval , setImmediate api está en cola en la cola de tareas macro.
Pero no estoy seguro acerca de addEventListener .
¿La función de devolución de llamada de addEventListener está en cola en la cola de tareas de macro?
Revisa por favor :D
Sé que la función de devolución de llamada de setTimeout, setInterval, setImmediate api está en cola en la cola de tareas macro.
No es. Lo que está en cola en la cola de tareas del temporizador es una tarea . Los pasos de esta tarea serán los encargados de ejecutar los callbacks (a través del algoritmo fire an event ). La devolución de llamada en sí se almacena en la memoria.
Para los detectores de eventos, es casi lo mismo, las devoluciones de llamada de eventos nunca se ponen en cola en una fuente de tareas, solo las tareas o microtareas, y como parte de los pasos de estas tareas, los eventos se envían y las devoluciones de llamada se ejecutan.
Por ejemplo, puede muy bien hacer que un evento se active desde una microtarea (por ejemplo, el evento de cambio de ranura , pero también puede forzarlo usted mismo con EventTarget#dispatchEvent() ), la mayoría de los eventos nativos son generalmente parte de la tarea (simplemente busque la frase to fire an event en las especificaciones de HTML para ejemplos), y tiene un montón de eventos que no se activan desde ninguna tarea ni microtarea, sino directamente como parte del procesamiento del bucle de eventos, en la actualización del paso de representación .