Por ejemplo, tenemos la función reallyHeavyOperation , que bloquea el subproceso de javascript durante algún tiempo. Y, durante la ejecución de esta operación, el usuario hace clic en un botón con un oyente adjunto.
Para el código a continuación, Chrome registra un "clic" después de que se finaliza la operación realmente pesada.
test.addEventListener('click', () => { console.log('click') }) reallyHeavyOperation();Como sé, los navegadores manejan dichos eventos DOM de forma sincrónica (dime si me equivoco). Pero, ¿cómo pueden hacerlo cuando el hilo de ejecución está bloqueado con algún trabajo? ¿Hay algo como la cola de eventos de la interfaz de usuario, donde los navegadores almacenan las interacciones y luego las envían, cuando la pila de llamadas se libera?
¡Realmente agradecería si alguien pudiera proporcionar enlaces a especificaciones o código fuente, para poder leer más sobre esto!