Maison >interface Web >js tutoriel >Comment implémenter correctement les retards dans les boucles JavaScript ?

Comment implémenter correctement les retards dans les boucles JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-02 20:47:38797parcourir

How to Properly Implement Delays in JavaScript Loops?

Implémentation de délais dans les boucles JavaScript

Lorsque vous travaillez avec des boucles en JavaScript, il est parfois nécessaire d'introduire un délai ou une période de veille pour contrôler l'exécution couler. Explorons comment y parvenir à l'aide de la fonction setTimeout().

Tentative 1 : Utilisation de setTimeout()

Une approche courante consiste à utiliser setTimeout() pour créer un retard basé sur le temps. Cependant, placer setTimeout() directement dans une boucle peut entraîner un comportement inattendu. Par exemple, le code suivant tente de retarder chaque itération de 3 secondes :

for (var start = 1; start < 10; start++) {
  setTimeout(function () {
    alert('hello');
  }, 3000);
}

Alors que ce code affichera initialement le message « bonjour » après 3 secondes, il affichera ensuite le message en continu sans aucun délai. Cela se produit parce que setTimeout() n'est pas bloquant et revient immédiatement, permettant à la boucle de se terminer avant que le délai ne soit écoulé.

Approche alternative : boucle itérative

Pour pour atteindre le délai souhaité, nous pouvons utiliser une boucle itérative avec un appel setTimeout() à l'intérieur d'une fonction :

var i = 1;

function myLoop() {
  setTimeout(function () {
    console.log('hello');
    i++;
    if (i < 10) {
      myLoop();
    }
  }, 3000);
}

myLoop();

Dans ce cas, la fonction myLoop() est appelée initialement, configurant le premier déclencheur setTimeout(). Ensuite, dans le rappel setTimeout(), le message est imprimé, le compteur est incrémenté et si le compteur est toujours inférieur à 10, la fonction myLoop() est à nouveau appelée. Cela garantit que la prochaine itération de la boucle n'est déclenchée qu'une fois le délai de 3 secondes écoulé.

En utilisant une boucle itérative en conjonction avec setTimeout(), vous pouvez efficacement introduire des retards dans les boucles JavaScript et contrôler le flux d'exécution avec précision.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn