Créer une pause à l'intérieur d'une boucle while en javascript
Je voudrais créer une pause à l'intérieur d'un while
boucle afin que je puisse créer n
animations qui apparaissent chaque 3 secondes après l'autre.
J'ai essayé, mais ça ne fonctionne pas. Aimeraient avoir quelqu'un me montrer ce que je fais mal. Merci!!
i=0;
while (i < n) {
someanimation();
setTimeout(function(){
i++;
}, 3000);
};
- Double Possible de Comment puis-je ajouter un retard dans une boucle JavaScript?
Vous devez vous connecter pour publier un commentaire.
setTimeout
ne fait pas une pause; il demande de Javascript pour exécuter d'autres codes plus tard.Googler "setTimeout" en boucle qui vous dit exactement ce que vous devez savoir. Si vous regardez autour de vous un peu, il mentionne même setInterval. La différence: à l'aide de setTimeout pour boucle d'attente de 3 secondes entre les boucles, alors que setInterval permettra de faire prendre 3 secondes au total pour la boucle (y compris cependant beaucoup de temps à l'animation, tant que c'est de moins en moins de 3 secondes 🙂 ). Aussi, setInterval construit une boucle infinie que vous allez avoir à sortir de après la le nombre désiré de fois; setTimeout vous oblige à construire la boucle de vous-même.
setInterval
. Je pas faire mieux pour effacer lesetInterval
quandi >= n
.setTimeout
est un peu plus compliqué que cela, car il ne bloque pas (c'est à dire qu'il n'a pas fini d'attente le délai d'attente avant de continuer avec le programme).Ce que vous voulez est plus proche de ceci:
Il peut également être utile de votre temps à lire sur les
setInterval
comme une alternative possible.Bien, grâce à ES6-7 avec les Promesses que nous pouvons maintenant faire une pause et de le rendre agréable à regarder en même temps!
Un de la manière de le faire est d'utiliser RxJS. Veuillez prendre un coup d'oeil à exemple de travail ici
Vous n'êtes pas très précis sur ce que vous voulez faire, mais je dirais que le principal problème est que vous appelez
someanimation()
sans délai. Alors peut-être que cela résout-il pour vous:Remarque manquant
()
aprèssomeanimation
comme c'est le rappel poursetTimeout()
.someanimation()
dans la fonction de minuterie.someanimation()
sont effectuées en même temps. Alors que Karl commentaire de sens, la vôtre n'est pas valide.créer une fonction comme:
puis modifiez votre code pour