为什么Web worker不提供对DOM对象的访问权限?

时间:2015-05-25 08:23:36

标签: javascript web-worker worker

我一直在javascript中使用网络工作者。如果窗口,文档引用存在于Web worker环境中,那将是一个锦上添花。 我想知道为什么选择不在工人中提供这些参考资料的原因是什么?

还有任何解决方法可以使用这些参考资料吗?

1 个答案:

答案 0 :(得分:5)

标准JavaScript和DOM API绝对没有允许多个线程安全访问相同对象的排除机制。

通常选择允许在JavaScript中进行多任务处理的解决方案是隔离线程,只让它们通过消息(或事件)进行交换。让网络工作者访问DOM可以打破这种隔离。

请注意,这并非完全针对JavaScript:几乎所有GUI框架(无论语言如何)都将GUI的修改限制为一个专用线程。 JavaScript更具限制性,因为大多数情况下(总是在浏览器中)您根本无法共享对象。

简单的解决方法是让后台线程为其提供指令through messages时,让浏览器中的主线程执行您需要进行的修改。或者更确切地说:只做webworker中的CPU扩展任务,让主线程获取输入数据,并在webworker发送输出数据时更新DOM。