将值存储到localStorage的顺序是否同步?

时间:2015-01-04 18:21:29

标签: javascript local-storage

对不起我糟糕的英语。

我使用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)可能会在之前的任何项目之前保存?

亚历

1 个答案:

答案 0 :(得分:2)

从W3C规范:

  

每当要检查,返回,设置或删除localStorage属性的Storage对象的属性时,无论是作为直接属性访问的一部分,还是在检查属性的存在时,在属性枚举期间,确定数量时如果存在属性,或者作为执行存储接口上定义的任何方法或属性的一部分,用户代理必须首先获取存储互斥锁。

这意味着它以同步方式运行,但不保证页面重新加载后存储项目的顺序。

但是要回答你的问题,是的,"bar100"将最后写入本地存储。