【发布时间】:2012-12-29 02:57:21
【问题描述】:
设置 2 个或更多值时可以这样做吗?我正在使用 phonegap 并担心用户可能会在应用程序完成设置这两个值之前终止它。
我意识到我可以将 W3C web sql 与事务一起使用,但我不想因为我正在做的事情而使用 sql 的过度杀伤力。
【问题讨论】:
标签: javascript cordova local-storage
设置 2 个或更多值时可以这样做吗?我正在使用 phonegap 并担心用户可能会在应用程序完成设置这两个值之前终止它。
我意识到我可以将 W3C web sql 与事务一起使用,但我不想因为我正在做的事情而使用 sql 的过度杀伤力。
【问题讨论】:
标签: javascript cordova local-storage
默认情况下,不,没有锁定机制。但是,您可能还想查看此question 和它引用的@987654322@。如果以原子方式持久化这些值对您的程序至关重要,那么您最好使用 SQL 事务。
【讨论】:
保护写入:
localStorage.setItem("writing", "1");
localStorage.setItem("k1", "v1");
localStorage.setItem("k2", "v2");
...
localStorage.removeItem("writing");
然后,在加载数据库时:
if (localStorage.writing != undefined)
{
treat the DB as corrupted
}
【讨论】:
writing 标志应该包含一些唯一的标记(例如,随机数),然后最后我们应该检查它是否仍然存在。此外,我们可以在一个自动字段中存储数据的散列(例如,CRC、MD5 等)......如果我们需要处理所有更新,那么我们将不得不实现某种日志......跨度>
writing 是否未定义,并发现它是。 2. CPU 切换到 Tab2。它检查writing 是否未定义,并确定它是。然后将writing 设置为1 3. CPU 切换到Tab1。它已经看到writing 未定义,因此将writing 设置为1。然后将k1 设置为42。 4. CPU 切换到Tab2。它将k1 设置为“foobar” 5. CPU 切换到 Tab1。它从k1 读取“foobar”。