【问题标题】:Web workers and accessing object attached to the window object网络工作者和访问附加到窗口对象的对象
【发布时间】:2019-07-02 11:33:20
【问题描述】:

我有一个像这样创建的 ember 应用程序:

window.App = Ember.Application.create({});

我想在 web worker 上做一些后台处理。

如何在单独的 Web 工作线程中访问窗口对象或其他一些全局对象?

【问题讨论】:

  • 您可以使用postMessage() 发回状态吗?
  • 我可以但是不会将上下文传递回主线程吗?
  • 是的。据我所知,你应该在一个新线程上做事,而不会对主线程产生直接的副作用。
  • 我想做的是用 json 加载一个对象,然后让它在以后可用。我是否应该将数据放入本地存储,因为尝试在新线程上更新存储有副作用。

标签: javascript html web-worker


【解决方案1】:

简短的回答。你不能。

Web Worker 唯一可用的资源是他们使用 importScripts() 从 JavaScript 文件加载的资源,或通过 postMessage() 传递给他们的任何资源。

但是,您现在可以将对象传递给它们。它们会自动序列化和反序列化为 JSON。

此外,Worker 无法访问本地存储。

【讨论】:

  • 你知道如果我调用importScripts,窗口对象会在导入的脚本中可用吗?
  • 您可以从工作人员那里访问窗口对象。
  • @dagda1 试试看web worker tutorial on MDN
  • 如果我从 web worker 调用 self.postMessage,这会将上下文推送回主 UI 线程还是仍在工作线程上?
  • @dagda1 你是说范围吗? postMessage() 的范围将是 Worker 对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多