我正在与localStorage一起在同一资源管理器中的选项卡之间传播信息。
我实际上有一个正在执行某些操作的存储侦听器,其想法是在事件被处理后立即删除,因为我不想对其进行两次处理。
var storageListener = function(storageEvent) {
var data = localStorage.getItem(storageEvent.key);
if(data != null){
// some code
localStorage.removeItem(storageEvent.key);
}
}
window.addEventListener('storage', storageListener);
我的问题很简单。如果我的应用程序运行5次,我将执行该代码5次。
我已阅读本地存储规范:https://www.w3.org/TR/webstorage/#the-localstorage-attribute
他们说:
由于使用了存储互斥锁,因此多个浏览上下文将能够同时访问本地存储区域,以使脚本无法检测到任何并发脚本执行情况。
据我了解,无法检测到事件监听器抛出的其他事件实例(由于我的英语不完美,我希望我错了!)
您知道在我的活动中是否可以放置“锁”或类似的东西,以便仅处理一次作业?
非常感谢
编辑:我已经看到一些可行的手工解决方案,但是它们都已经有7或8年的历史了。现在有一种通用的方法吗? (或者他们是否在localStorage中做了我没有注意到的本地操作)?