localstorage 和 setInterval() 具有多个选项卡

Dee*_*mar 5 javascript

我们存储了一些数据localstorage,并且window.setInterval()每分钟定期更新它。在此期间我们不断地读取和写入数据。

是否可能会出现并发问题,因为我们正在使用setInterval(),因为多个选项卡可以同时修改数据localstorage


编辑1:详细解释场景:

每个选项卡都针对localstorage一个键(例如xyz)写入一些数据,并且setInterval()存在于正在运行的 JavaScript 中,不断检查xyz键数据。如果该键存在一些数据,则setInterval回调会将其发送到后端。运行相同脚本的每个选项卡将读取密钥xyz,并在执行某些逻辑后将一些数据附加到现有值。

我怀疑可能会出现并发问题,例如一个选项卡可能正在读取密钥xyz并将数据添加到本地存储,而另一个选项卡可能同时执行相同的操作。现在两者都会尝试同时发送数据,因此我可能会在后端收到相同的数据两次。

Set*_*eti 0

编辑后添加:还有一种可能性,您可以尝试找出您的哪个页面/选项卡处于活动状态(您的页面),然后仅在活动选项卡上激活计时器,然后降低发生并发的机会。这是用于可见性检查的https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API api。