对不起我糟糕的英语。
我使用localStorage来存储一些属性。每个属性都有自己的键和值,键和值是动态生成的。所以我不知道会有多少人。
在第1页上保存所有属性(只需点击一下)。
在第2页,我称之为“存储”事件。我需要读取所有键和值,并使用这些重新呈现页面内容。
问题是“存储”事件会为每个键/值对触发。而且我不想为每个键/值对重新呈现page2的内容。我想等待,直到所有属性都保存在page1上,然后重新呈现page2的内容。
所以我需要确保所有属性都保存在page1上,之后我需要在第2页上阅读它们。
我的问题:localStorage的存储过程是否同步? “同步”对我来说意味着只有一个setItem命令同时执行,所有的setItem命令都按照我写的确切顺序执行。 所以当我写的时候:
(loop start)
localStorage.setItem("bar1", foo1)
localStorage.setItem("bar2", foo2)
...
localStorage.setItem("bar100", foo100)
(loop end)
我可以确定,所有项目都已保存(“bar100”,foo100)吗?
或者可能有任何问题,(“bar100”,foo100)可能会在之前的任何项目之前保存?
亚历
答案 0 :(得分:2)
从W3C规范:
每当要检查,返回,设置或删除localStorage属性的Storage对象的属性时,无论是作为直接属性访问的一部分,还是在检查属性的存在时,在属性枚举期间,确定数量时如果存在属性,或者作为执行存储接口上定义的任何方法或属性的一部分,用户代理必须首先获取存储互斥锁。
这意味着它以同步方式运行,但不保证页面重新加载后存储项目的顺序。
但是要回答你的问题,是的,"bar100"
将最后写入本地存储。