搜尋

首頁  >  問答  >  主體

如何在javascript中強制即時顯示更新?

<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粉148434742P粉148434742454 天前553

全部回覆(1)我來回復

  • P粉369196603

    P粉3691966032023-09-05 10:50:29

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

    回覆
    0
  • 取消回覆