javascript - 我可以在浏览器 ui 线程和 web 工作线程中安全地使用 html5 中的哪些本地存储

标签 javascript local-storage web-worker web-sql

我一直在尝试在基于 webkit 的浏览器中使用 web sql database api。我一直在主ui 线程web worker 中使用async api。两个线程都访问同一个数据库(如您所知,它是底层的 sqlite)

一切正常,但有时交易会丢失或一个交易失败,这似乎是一个计时/竞争条件。看来对底层 sqlite 数据库的访问不是线程安全的。

更多的背景。我的 web worker 只是对一个表执行查询,该表可能从主 ui 线程插入了一条记录。

我想知道它是否真的在某个地方记录了什么本地/网络存储可以从用户界面线程和网络工作线程安全地访问?我在某处读到 indexeddb api 是线程安全的,但这对我现在没有帮助,因为浏览器对它的支持很差/不存在我的目标浏览器(至少我是这样认为的) - 我的信息来自 http://caniuse.com )

任何见解将不胜感激

最佳答案

您不能使用 WebWorkers 中的 localStorage 或 sessionStorage。

虽然两者都是同步操作,但对于简单的数据写入和读取而言,它们并不是真正的问题。该问题在浏览器启动时更为相关,但这是浏览器实现问题。

看看这个,它应该有帮助:http://www.nczonline.net/blog/2012/04/25/the-performance-of-localstorage-revisited/

关于javascript - 我可以在浏览器 ui 线程和 web 工作线程中安全地使用 html5 中的哪些本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9295433/

相关文章:

php - 在注册页面上使用 ajax 提交表单

javascript - 哪个库用于将外部字体嵌入网站?

javascript - 防止 javascript 自动转义和字符

javascript - 使用 ngStorage/localstorage 保存键=>值样式

reactjs - 从数组中删除数据时,UseEffect 不会重新渲染,仅在添加数据时才会重新渲染

Angular 服务和网络 worker

javascript - 渲染过程中调用的工作人员发来的帖子会去哪儿?

javascript - 有什么方法可以强制委托(delegate) Iframe 内容的工作吗?

javascript - setTimeout VS Web Worker - 何时使用什么?

javascript - 本地存储添加项目