Bagaimana untuk memaksa kemas kini paparan masa nyata dalam javascript?
P粉148434742
P粉148434742 2023-09-04 17:44:30
0
1
549
<p>Bagaimanakah saya boleh mendapatkan javascript untuk mengemas kini halaman web saya dalam masa nyata? Nampaknya penyemak imbas Chrome saya sedang meletakkan semua kerja pemprosesan ke dalam pengiraan yang diperlukan dan kemudian mengemas kini halaman web. Di bawah ialah fail HTML ujian yang paling mudah. Saya lebih suka melihat pengiraan berurutan (daripada hanya melompat ke nilai akhir). Apakah yang perlu saya gantikan <code>display.innerHTML = i;</code> </p> <p>Saya harap jawapannya bukan untuk memecahkan pengiraan saya kepada banyak pengiraan menggunakan setInterval atau sebagainya. Sudah tentu gangguan yang dibuat ini akan membolehkan paparan dikemas kini, tetapi saya tidak suka menguruskannya dengan terperinci ... Saya harap ada ciri paparan "blok" yang tersedia supaya pengiraan di sini tidak berterusan sehingga penyemak imbas Memaparkan kemas kini paparan saya (atau adakah terdapat arahan "refresh" seperti yang disediakan oleh C?). Saya boleh menggunakan konsol pembangun jika perlu, tetapi itu juga tidak sesuai. </p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html> <badan> <p id="Paparan"></p> <skrip> paparan const = document.getElementById("Paparan"); untuk (biar i = 0; i <= 3000000000; i++) { jika (i % 100000000 == 0) paparan.innerHTML = i } </skrip> </badan> </html></pre></p>
P粉148434742
P粉148434742

membalas semua(1)
P粉369196603

requestAnimationFrameCara

Gunakan requestAnimationFrame atau setTimeout apabila keluar dari gelung untuk membenarkan UI dikemas kini, kemudian sambung semula gelung di tempat ia berhenti.

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>

Kaedah Pekerja Web

Masukkan algoritma anda ke dalam fail JS dan mesej akan disiarkan apabila ia perlu dikemas kini

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

Dan dalam kod UI anda.

const display  = document.getElementById("Display");
const myWorker = new Worker("workerAlgorithm.js");
myWorker.onmessage = (e) => {
  display.innerHTML = e.data;
};
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan