从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。