如何在javascript中強制即時顯示更新?
P粉148434742
P粉148434742 2023-09-04 17:44:30
0
1
550
<p>如何取得 javascript 來即時更新我的網頁? 看來我的 Chrome 瀏覽器將所有處理工作都投入到所需的計算中,然後進行網頁更新。以下是最簡單的測試 HTML 檔案。我更願意看到順序計數(而不是僅僅跳到最終值)。我該用什麼替換 <code>display.innerHTML = i;</code> ? </p> <p>我希望答案不是使用 setInterval 或類似的東西將我的計算分解為許多計算。當然,這創建的中斷將允許顯示更新,但我不喜歡如此詳細地管理它......我希望有一個可用的“阻止”顯示功能,以便這裡的計數不會繼續進行,直到瀏覽器渲染我的顯示更新(或者是否有像C 提供的“刷新”命令?)。如果需要,我可以使用開發者控制台,但這也不理想。 </p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html> <body> <p id="Display"></p> <script> const display = document.getElementById("Display"); for (let i = 0; i <= 3000000000; i ) { if (i % 100000000 == 0) display.innerHTML = i; } </script> </body> </html></pre></p>
P粉148434742
P粉148434742

全部回覆(1)
P粉369196603

requestAnimationFrame方式

在退出循環時使用 requestAnimationFrame 或 setTimeout 以允許更新 UI,然後從中斷處恢復循環。

const display = document.getElementById("Display");

function process() {

  let index = 0;
  const max = 3000000000;
  
  function run () { 
    while (index <= max) {
      if (index % 100000000 == 0) {
        display.innerHTML = index;
        break;
      }
      index++;
    }
    if (index++ <= max) window.requestAnimationFrame(run);
  }
  
  run();
}

process();
<p id="Display"></p>

Web Worker 方式

#將您的演算法放入 JS 檔案中,當需要更新時會發布一條訊息

for (let i = 0; i <= 3000000000; i++) {
    if (i %   100000000 == 0) self.postMessage(i);
}

並在您的 UI 程式碼中。

const display  = document.getElementById("Display");
const myWorker = new Worker("workerAlgorithm.js");
myWorker.onmessage = (e) => {
  display.innerHTML = e.data;
};
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板