J'exécute une boucle for avec une pause d'une seconde entre chaque itération:
<html> <body> <script> var text = ""; var i; // Wait function function wait(ms){ var start = new Date().getTime(); var end = start; while(end < start + ms) { end = new Date().getTime(); } } for (i = 0; i < 5; i++) { text += "The number is " + i + "<br>"; wait(100) } </script> <script>document.write(text)</script> </body>
Actuellement, lorsque j'ouvre le fichier dans un navigateur Web, la fenêtre du navigateur se charge jusqu'à ce que le for la boucle est terminée, puis les résultats sont affichés (cinq lignes de sortie). Existe-t-il un moyen d'afficher la sortie "en temps réel". Avec cela, je veux dire, j'ouvre la page et chaque seconde une nouvelle ligne est imprimée. Merci!
3 Réponses :
Vous devriez en apprendre davantage sur les concepts de délai d'expiration et d'intervalle en Javascript.
Voici le code qui fera le travail. Examinez-le.
<html> <body> <script> function waitAndWrite(num) { setTimeout(() => { let text = "The number is " + num + "<br>"; document.write(text) }, num * 1000) } for (let i = 0; i < 5; i++) { waitAndWrite(i) } </script> </body>
Merci! Comment puis-je retourner le texte en remplacement de la ligne de texte précédente ou en d'autres termes ne pas ajouter une nouvelle ligne mais supprimer l'ancienne en premier et ensuite ajouter la nouvelle ligne?
De plus, si j'exécute le script sur mon ordinateur, toutes les lignes s'affichent en même temps.
Faites quelque chose comme ça
Tout ce que l’attente fait, c’est figer le navigateur. Apprenez à utiliser setTimeout / setInterval et à ne pas utiliser document.write.
En général, vous définiriez un délai dans la boucle for en utilisant l'itérateur comme multiplicateur du délai (
i * 1000
). Essayez-vous de suspendre complètement l'exécution ou simplement de retarder le temps entre l'écriture des éléments sur la page?J'essaye de retarder le temps entre l'écriture