Usando el planificador de GWT

Me está costando entender la diferencia entre los diversos métodos de la interfaz com.google.gwt.core.client.Scheduler , específicamente, los métodos scheduleDeferred , scheduleFinally y scheduleIncremental .

Creo que tengo dificultades en mi comprensión por mi falta de familiaridad con el ciclo de procesamiento de eventos del navegador, al que se refiere la documentación del Progtwigdor.

¿Podría explicar cómo estos métodos difieren entre sí y cómo funcionan en relación con el ciclo de eventos del navegador?

JavaScript (en un navegador) tiene un solo hilo. El modelo de bucle de eventos significa que siempre estamos exactamente en uno de dos estados:

  • en el evento de bucle
  • ejecutar un controlador de eventos

Hay muchos tipos de eventos: eventos de clic, eventos de carga, eventos XHR, eventos de temporizador, … Tendrás que declarar algunos controladores (al menos uno durante la carga de la página), de lo contrario, nunca se ejecutará nada de tu código. Uno de ellos es el controlador que especifique implementando onModuleLoad .

Es importante mantener todos los manejadores cortos, porque no hay paralelismo y no hay interrupciones (excepto por el último recurso interrupción “guión no responde”). Esto significa que los usuarios no pueden interactuar con la interfaz, hasta que el navegador regrese al ciclo de eventos, y eso no ocurre antes de que el controlador actual finalice.

Por lo tanto, si desea diferir algún código hasta que los otros controladores de eventos hayan tenido la oportunidad, puede usar Scheduler.scheduleDeferred .

Scheduler.scheduleIncremental te ayuda a dividir las tareas realmente largas en varios pasos, dando a los otros controladores de eventos una oportunidad entre cada uno de los pasos.

Scheduler.scheduleFinally solo significa: después de manejar nuestro controlador actual (incluso si se produce una excepción), pero antes de volver al bucle de evento, ejecute mi comando.

Consulte com.google.gwt.core.client.impl.Impl.entry0 ()

Intereting Posts