簡體   English   中英

如何跨多個瀏覽器窗口創建增量計數器?

[英]How to create incremental counter across multiple browser windows?

我嘗試使用 localStorage 跨多個窗口同步計數器,我發現由於 localStorage 沒有鎖,因此可能會出現賽車問題。

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);

當我打開三個 Chrome 瀏覽器窗口(具有分離的線程)時,計數器似乎最終會運行到 1498 或 1497 而不是 1500。

在此處輸入圖像描述

分離讀寫操作。

您可以使用 JSON 數組結構為每個瀏覽器窗口指定單獨的變量以進行寫入操作。 當您需要閱讀時,您可以訪問所有單個變量並將它們添加在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM