繁体   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