2011-03-24 16 views
18

que he estado haciendo un poco de programación de aplicaciones web usando GWT y se han confundido con el término "evento navegador de bucles".¿Qué es un bucle de evento de navegador?

he encontrado situaciones en las que necesito para ejecutar comandos diferidos y "hacer algo" después de que el bucle de eventos del navegador completa.

Me gustaría saber lo que es exactamente que es y lo que sucede durante el proceso de bucle de eventos y en qué orden?

+2

Similar: http://stackoverflow.com/questions/5131086/using-the-gwt-scheduler –

Respuesta

18

Un bucle de eventos del navegador es un hilo iniciado por el navegador que está en constante exploración para diferentes eventos y en funcionamiento, así como suena. A medida que ocurren los eventos, se colocan en la cola de eventos y se ejecutan sucesivamente por el hilo de un evento. Tu javascript no debe crear sus propios bucles esperando que se complete o algo por el estilo ... bloqueará ese único hilo de bucle de evento continuo. En su lugar, usaría algo como setTimeout o setInterval y verificaría las condiciones que esté esperando para que el navegador pueda hacer el trabajo mientras espera.

GWT es bueno ya que puede cooptar este proceso usando el scheduler - en su caso en el que desea ejecutar algo después de que el ciclo de eventos 'complete' probablemente desee usar scheduleFinally o scheduleDeferred. Inyectará un controlador para un fragmento de código en la cola de eventos para que se ejecute después de todos los demás códigos en el contexto de ejecución actual (contexto de ejecución actual == donde sea que se encuentre en la jerarquía de objetos de JavaScript actual con la ventana como raíz objeto) se ejecuta pero antes del próximo evento que se coloca en la cola.

+1

Además, es el archivo adjunto de nuestros widgets y elementos de IU al DOM el último evento en el ciclo, después del cual el navegador ciclo de evento completo? – gofeddy

+1

Los eventos de manipulación de DOM se manejan de la misma manera que los demás eventos. No son necesariamente el primer o el último evento para disparar, simplemente donde sea que aterricen en la cola. También crean el árbol DOM para que pueda tener oyentes para esos eventos en cualquier parte del árbol "arriba" donde se desencadena el evento. El factor de complicación, en vanilla js, es que cada navegador maneja los eventos de mutación DOM de manera diferente. – Ichorus

+0

GWT 'captura' eventos con GWTEventSystem para intentar crear un esquema unificado de manejo de eventos. Los eventos siguen el esquema de borrado de árboles descrito anteriormente, pero por cada evento que se desencadena, primero pasa a través del HandlerManager de GWT que busca Handlers registrados para ese tipo de evento. Si encuentra uno, desencadena el código del EventHandler si no lo pasa de nuevo al navegador para el manejo estándar. ¿Qué estás tratando de hacer exactamente? – Ichorus

Cuestiones relacionadas