Intenté usar localStorage para sincronizar un contador en varias ventanas y descubrí que, dado que localStorage no tiene un bloqueo, es posible que haya un problema de carrera.
const root = document.getElementById('root'); let thisCounter = 0; const interval = setInterval(() => { const counter = parseInt(localStorage.getItem('counter') || 0, 10); localStorage.setItem('counter', `${counter + 1}`); ++thisCounter; root.innerHTML = `global: ${counter + 1}, this: ${thisCounter}`; if (thisCounter >= 500) { clearInterval(interval); } }, 100);Y cuando abro tres ventanas del navegador Chrome (habiendo subprocesos separados), parece que el contador eventualmente se ejecutará en 1498 o 1497 en lugar de 1500.
Separe las operaciones de lectura y escritura.
Puede usar una estructura de matriz JSON para designar variables individuales para cada ventana del navegador para operaciones de escritura. Cuando necesite leer, puede acceder a todas las variables individuales y agregarlas.