recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment forcer les mises à jour d’affichage en temps réel en javascript ?

<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粉148434742P粉148434742490 Il y a quelques jours586

répondre à tous(1)je répondrai

  • P粉369196603

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

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

    répondre
    0
  • Annulerrépondre