WebWorker可以访问localStorage吗?
如果不是为什么不呢?从安全角度来看,这有问题吗?
答案 0 :(得分:91)
网络工作者只能访问以下内容:
无法从Web worker访问窗口或父对象,因此无法访问localStorage。
要在窗口和workerglobalscope之间进行通信,您可以使用postMessage()
函数和onmessage事件。
访问DOM和窗口不是线程安全的,因为子线程具有与其父线程相同的权限。
答案 1 :(得分:61)
不,在Webworker进程中,localStorage和sessionStorage都是未定义的。
您必须将postMessage()
调回Worker的原始代码,并将该代码存储在localStorage中。
有趣的是,网络工作者可以使用AJAX调用向服务器发送信息/从服务器检索信息,这可能会打开可能性,具体取决于您尝试做什么。
答案 2 :(得分:30)
您可以在IndexedDB中使用WebWorkers,这是一种在密钥值存储中本地存储内容的方法。它与localStorage不同,但它具有相似的用例,可以容纳大量数据。我在WebWorkers中使用IndexedDB。
答案 3 :(得分:0)
kvStorage是一个不错的选择,
2019年12月。目前尚不支持kvStorage,将来也不支持chrome。
该规范的工作目前已暂停,因为目前没有浏览器团队(包括发起该提案的Chromium项目)都表示有兴趣实施该规范。