Workers JSNI at GWT svn Parece que los WebWorkers aún no se han implementado por completo. Sé que el elemento está en una etapa temprana de desarrollo, pero ¿podría ser que alguien ya haya intentado hacerlo funcionar?WebWorkers en GWT Elemental
Respuesta
El problema con los trabajadores de la web es que realmente no se ajustan al modelo estándar de GWT/Java; en mi opinión, apenas se ajustan al modelo estándar de JS.
Los trabajadores de la web trabajan transfiriendo datos hacia atrás y hacia adelante entre lo que son esencialmente diferentes máquinas virtuales de JavaScript. Esa información debe tener la forma de una cadena, y cada trabajador debe cargar su JS por separado. Esto significa que ninguna variable declarada en un trabajador (o en la página principal) es accesible desde otra, a menos que se transmita como parte de los datos de cadena, entre los trabajadores.
Entonces, ¿cómo funciona esto cuando se considera GWT/Java? Desde la perspectiva de Java, esto no es equivalente a múltiples hilos, ¡sino a múltiples JVM! Los diferentes procesos solo se pueden comunicar pasando cadenas (o más importante, no objetos Java) hacia adelante y hacia atrás, y no pueden compartir ningún otro estado. Incluso las variables estáticas pueden ser diferentes entre las dos máquinas virtuales.
Desde el enlace informados, echa un vistazo a la fuente de JsWorker - puede crear una instancia de esta vía JsWindow.newWorker con la url del script JS para empezar, y JsWorker soporta métodos para escuchar las respuestas, y para enviarlo mensajes para que funcione.
Ese script podría ser un objeto compilado de GWT, pero sería un módulo y un punto de entrada aparte de la aplicación original, de modo que solo tiene el código razonablemente ejecutable y no intenta comenzar a dibujar en la página cuando se carga Probablemente necesitaría usar un enlazador que solo cargaría el JS, y no asumiría un iframe en la 'página'.
El proyecto GWT-NS ya tiene algunas muestras de trabajadores web, creadas con su propio enlazador para construir archivos js para cargar para cargar en el trabajador, y algunas otras piezas de conveniencia también.
- 1. WebWorkers y WebSockets with Firefox
- 2. Diferencia entre gwt, gwt-rpc, ext-gwt, smart gwt
- 3. GWT code O GWT Designer?
- 4. Ext GWT vs GWT-EXT
- 5. GWT: UiBinder o GWT Designer?
- 6. ¿Alguien ha hecho alguna vez grandes búsquedas en JavaScript usando webworkers para paralelizar?
- 7. Imagen en botón GWT
- 8. cliente en GWT
- 9. cómo ClientBundle en GWT?
- 10. serialización BigDecimal en GWT
- 11. gwt pushButton en UiBinder
- 12. Enhebrado en GWT (Cliente)
- 13. Barra deslizadora en GWT
- 14. GWT: Menús en UiBinder
- 15. GWT UiHandler en HTMLPanel
- 16. Serializar objeto en GWT
- 17. Cómo configurar Ext GWT con GWT Designer?
- 18. Migrar GWT 2.0.4 Proyecto de GWT 2.1.0
- 19. Diferencia entre gwt-ext y ext-gwt
- 20. GWT: Gotcha's
- 21. Aprendiendo GWT
- 22. GWT IncompatibleRemoteServiceException
- 23. GWT removeClickHandler
- 24. Andamios GWT
- 25. GWT Compilación
- 26. Formateador de cadenas en GWT
- 27. aritmética básica en GWT CssResource
- 28. Escalar una imagen en GWT
- 29. Llamadas RPC síncronas en GWT
- 30. Haz clic derecho en GWT?
Respuesta perfecta. ¡Gracias! – JAre