从webWorker访问localStorage

WebWorker可以访问localStorage吗?

如果不是为什么不呢? 从安全的angular度来看,这是否有问题?

不,localStorage和sessionStorage在webworkerstream程中都是未定义的。

你将不得不调用postMessage()回到Worker的源代码,并让代码将数据存储在localStorage中。

有趣的是,webworker 可以使用AJAX调用来发送/从服务器获取信息,以便可能打开的可能性,这取决于你想要做什么。

Web工作人员只能访问以下内容:

  • XMLHttpRequest的
  • 应用程序caching
  • 创build其他networking工作者
  • 导航对象
  • 位置对象
  • setTimeout方法
  • clearTimeout方法
  • setInterval方法
  • clearInterval方法
  • importScripts方法
  • JSON
  • 工人

无法从Web工作人员访问窗口或父对象,因此您无法访问localStorage。

要在窗口和workerglobalscope之间进行通信,可以使用postMessage()函数和onmessage事件。

访问DOM和窗口不会是线程安全的,因为子线程将具有与其父级相同的特权。

您可以在WebWorkers中使用IndexedDB ,这是在关键值存储中本地存储事物的一种方法。 它与localStorage不一样,但它有相似的用例,可以容纳大量的数据。 在我的工作中,我们在WebWorkers中使用了IndexedDB。