Comment forcer les mises à jour d'affichage en temps réel en javascript ?
P粉148434742
P粉148434742 2023-09-04 17:44:30
0
1
551
<p>Comment puis-je obtenir le javascript pour mettre à jour ma page Web en temps réel ? Il semble que mon navigateur Chrome effectue tout le travail de traitement dans les calculs requis, puis met à jour la page Web. Vous trouverez ci-dessous le fichier HTML de test le plus simple. Je préfère voir un comptage séquentiel (plutôt que de simplement passer à la valeur finale). Par quoi dois-je remplacer <code>display.innerHTML = i;</code> </p> <p>J'espère que la réponse n'est pas de diviser mon calcul en plusieurs calculs en utilisant setInterval ou quelque chose comme ça. Bien sûr, l'interruption que cela crée permettra à l'affichage de se mettre à jour, mais je n'aime pas le gérer avec autant de détails... J'aimerais qu'il y ait une fonction d'affichage "bloqué" disponible afin que le comptage ici ne continue pas jusqu'à ce que le navigateur Rendu de mes mises à jour d'affichage (ou existe-t-il une commande "rafraîchir" comme celle fournie par C ?). Je peux utiliser la console développeur si nécessaire, mais ce n'est pas idéal non plus. </p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html> <corps> <p id="Affichage"></p> <script> const display = document.getElementById("Display"); pour (soit i = 0; i <= 3000000000; i++) { si (i % 100000000 == 0) display.innerHTML = i; </script> </corps> </html></pre></p>
P粉148434742
P粉148434742

répondre à tous(1)
P粉369196603

requestAnimationFrameChemin

Utilisez requestAnimationFrame ou setTimeout lorsque vous quittez une boucle pour permettre la mise à jour de l'interface utilisateur, puis reprenez la boucle là où elle s'est arrêtée.

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>

Méthode Web Worker

Mettez votre algorithme dans un fichier JS et un message sera publié lorsqu'il devra être mis à jour

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

Et dans votre code d'interface utilisateur.

const display  = document.getElementById("Display");
const myWorker = new Worker("workerAlgorithm.js");
myWorker.onmessage = (e) => {
  display.innerHTML = e.data;
};
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal