Workers JSNI at GWT svn Es sieht so aus, als ob WebWorker noch nicht vollständig implementiert wurden. Ich weiß, dass Elementar in einem frühen Entwicklungsstadium ist, aber vielleicht hat jemand schon versucht, es zum Laufen zu bringen?WebWorkers in GWT Elemental
Antwort
Das Problem mit Web-Arbeitern ist, dass sie nicht wirklich zum Standard-GWT/Java-Modell passen - meiner Meinung nach passen sie kaum zum Standard-JS-Modell.
Web-Mitarbeiter arbeiten, indem sie Daten zwischen den verschiedenen JavaScript-VMs hin und her leiten. Diese Daten müssen in Form einer Zeichenfolge vorliegen, und jeder Worker muss seine JS separat laden. Dies bedeutet, dass auf keine Variablen, die in einem Worker (oder der Hauptseite) deklariert wurden, von einem anderen zugegriffen werden kann, es sei denn, es wird als Teil der String-Daten übergeben und zwischen Arbeitern hin- und hergeschoben.
Wie funktioniert das, wenn Sie GWT/Java betrachten? Aus der Java-Perspektive entspricht dies nicht mehreren Threads, sondern mehreren JVMs! Die verschiedenen Prozesse können nur kommunizieren, indem sie Strings (oder noch wichtiger, nicht Java-Objekte) hin- und hergeben und keinen anderen Status teilen können. Sogar statische Variablen können zwischen den beiden virtuellen Maschinen unterschiedlich sein.
Von den Link Sie auf dem Laufenden, überprüfen Sie die Quelle von JsWorker out - Sie eine Instanz dies über JsWindow.newWorker mit der URL des JS-Skript, mit zu beginnen erstellen können, und JsWorker unterstützt Methoden für Antworten zu hören und sie senden Nachrichten, damit es funktioniert.
Dieses Skript könnte ein GWT-kompiliertes Objekt sein - aber es wäre ein separates Modul und ein Eingangspunkt als die ursprüngliche App, so dass es nur den Code vernünftig ausführen kann und nicht versucht, auf der Seite zu zeichnen wenn es lädt. Es müsste wahrscheinlich einen Linker verwenden, der nur den JS laden würde und keinen Iframe auf der 'Seite' annehmen würde.
Das Projekt GWT-NS hat bereits einige Web-Worker-Beispiele, die mit ihrem eigenen Linker erstellt wurden, um js-Dateien zu erstellen, um sie in den Worker zu laden, und einige andere Convenience-Teile.
- 1. WebWorkers zerstören
- 2. RxJS und Webworkers
- 3. Wie debugge ich freigegebene Webworkers?
- 4. Unterschied zwischen gwt, gwt-rpc, ext-gwt, smart gwt
- 5. Daten-URIs in GWT
- 6. Hard Refresh in GWT
- 7. Hibernate Fehler in GWT
- 8. HTMLPanel In GWT
- 9. Mehrere Einstiegspunkte in GWT
- 10. Rechtsklick in GWT?
- 11. Routenplanung in gwt
- 12. Umschalttaste in GWT?
- 13. GWT: Menüs in UiBinder
- 14. BigDecimal-Serialisierung in GWT
- 15. Bild in GWT Button
- 16. Threading in GWT (Client)
- 17. Benachrichtigungsnachrichten in GWT
- 18. Wie ClientBundle in GWT?
- 19. HTTP-Anfrage in GWT
- 20. Erinnerung in GWT
- 21. Wiki-Rendering in GWT
- 22. gwt pushButton in UiBinder
- 23. Einfacher Hyperlink in GWT?
- 24. schließen in GWT
- 25. Seitennummerierung in GWT
- 26. Aktivitätsstatus in GWT speichern
- 27. GWT Buchmarkt oder GWT als externe Bibliothek
- 28. GWT: Abrufen von Daten aus Postgres in GWT CellTable
- 29. Gwt-Ext grid innen Gwt-Ext ColumnTree
- 30. Migrate GWT 2.0.4 Projekt GWT 2.1.0
Perfekte Antwort. Danke! – JAre