该setItem(key,value)函数是异步的吗?
localStorage.setItem("key",someText);
Run Code Online (Sandbox Code Playgroud)
Rya*_*gro 135
不,所有的localStorage电话都是同步的.
pax*_*blo 58
其实.网络存储不再是HTML5核心标准的一部分,它已被拆分.
相关(草案)规范可以在这里找到,你会注意到的一件事是它没有提到任何地方的同步或异步.
但是,对文本的分析表明它必须是同步的(我的粗体):
的setItem(键,值)方法必须首先检查是否有键/值对与给定键与该对象相关联的列表已经存在.
如果没有,则必须将新的键/值对添加到列表中,并使用给定的键并将其值设置为value.
如果给定键确实存在于列表中,并且其值不等于value,则它必须将其值更新为value.如果其先前的值等于value,则该方法必须不执行任何操作.
在标准中,单词喜欢must,shall并may带有非常具体的含义.它正在讨论方法必须做的事实意味着方法本身必须这样做,而不是将它推迟到以后的某个时间.
这也符合常识.如果setItem是异步的,则可以将项目设置为特定值,然后立即检索它,获取其先前的值.
有是在存储接口部,其暗示的异步行为的可能性的底部的注释:
该规范不要求上述方法等待数据物理写入磁盘.只需要访问相同的键/值对列表中的不同脚本的一致性.
但是,这仅仅是针对长期存储的内容.最后一句要求访问同一存储对象的脚本需要同步查看内容.
| 归档时间: |
|
| 查看次数: |
33966 次 |
| 最近记录: |