为什么 web worker 不授予对 DOM 对象的访问权限?

Why does web workers does not give access to DOM object?

我一直在 javascript 中使用网络工作者。如果 window,文档引用出现在网络工作者上下文中,那将是锦上添花。 我想知道为什么选择不让工作人员访问这些引用?

还有使用这些引用的解决方法吗?

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

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

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

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