簡體   English   中英

GWT元素中的Web工作者

[英]WebWorkers in GWT Elemental

GWT svn的工人JSNI看起來WebWorkers還沒有完全實現。 我知道元素處於發展的早期階段,但可能已經有人試圖讓它有效嗎?

Web worker的問題在於它們並不真正適合標准的GWT / Java模型 - 在我看來它們幾乎不適合標准的JS模型。

Web工作者通過在本質上不同的JavaScript VM之間來回傳遞數據來工作。 該數據必須采用字符串形式,每個工作人員必須單獨加載其JS。 這意味着在一個工作者(或主頁面)中聲明的變量不能從另一個工作者(或主頁面)中訪問,除非它作為字符串數據的一部分傳遞,在工作者之間來回傳遞。

那么當你考慮GWT / Java時這是如何工作的? 從Java的角度來看,這不等同於多個線程,而是多個JVM! 不同的進程只能通過來回傳遞字符串(或更重要的是,不是Java對象)來進行通信,並且不能共享任何其他狀態。 即使是兩個虛擬機之間的靜態變量也可能不同。

從您發布的鏈接中,查看JsWorker的來源 - 您可以通過JsWindow.newWorker創建一個這樣的實例,並使用JS腳本的url開始,並且JsWorker支持偵聽響應的方法,並將消息發送到讓它工作。

該腳本可以是GWT編譯對象 - 但它將是一個獨立的模塊和入口點,而不是原始應用程序,因此它只有合理運行的代碼,並且在加載時不會嘗試開始在頁面上繪圖。 它可能需要使用僅加載JS的鏈接器,並且不會在“頁面”上假設iframe。

GWT-NS項目已經有一些Web工作者樣本,使用他們自己的鏈接器構建js文件以加載到worker中加載,以及其他一些便利部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM