考虑这样一种情况,浏览器有两个或更多指向同一源的选项卡。不同选项卡的不同事件循环可能会导致在访问本地存储时出现竞争条件,而不同的选项卡可能会潜在地覆盖彼此在本地存储中所做的更改。
我正在编写一个将面临这种竞争条件的Web应用程序,因此我想了解可在此情况下使用的不同同步原语。
我正在编写一个将面临这种竞争条件的Web应用程序,因此我想了解可在此情况下使用的不同同步原语。
localStorage
的访问。每个JavaScript执行的单独“线程”(下面会解释其含义)在检查本地存储时必须尝试获取存储互斥锁(如果它还没有)。一旦获得互斥锁,它不会放弃直到完全完成。<script>
块。)通常情况下,JavaScript在浏览器中的本质是,在<script>
块中的代码或任何类型事件的处理程序中的代码运行直到停止;也就是说,运行到<script>
主体的结尾,或者运行直到事件处理程序返回。<script>
标记代码用完,或者直到事件处理程序返回。这种行为将实现规范中的这个保证: