Maison > interface Web > js tutoriel > js implémente les compétences code_javascript d'implémentation de boucle asynchrone

js implémente les compétences code_javascript d'implémentation de boucle asynchrone

WBOY
Libérer: 2016-05-16 15:15:27
original
1363 Les gens l'ont consulté

Question
Vous pouvez rencontrer des problèmes lors de la mise en œuvre d'une boucle asynchrone.

Essayons d'écrire une méthode asynchrone qui imprime la valeur d'index de la boucle une fois dans une boucle.

<script>
for(var i = 0; i < 5; i++){
setTimeout(function(){
document.writeln(i);document.writeln("<br />");
},1000);
}
</script>
Copier après la connexion

Le résultat du programme ci-dessus est :

5
5
5
5
5

Raison

Chaque timeout (timeout) pointe vers le i original, pas vers sa copie. Ainsi, la boucle for incrémente i à 5, puis le délai d'attente s'exécute et appelle la valeur actuelle de i (qui est 5).

Solution

Il existe plusieurs façons différentes de copier i. La méthode la plus courante et la plus utilisée consiste à créer une fermeture en déclarant une fonction et en passant i à cette fonction. Nous utilisons ici une fonction d'auto-appel.

Exécutez le code

<script>
for(var i = 0; i < 5; i++){
(function(num){
setTimeout(function(){
document.writeln(num);document.writeln("<br />");
},1000);
})(i);
}
</script>
Copier après la connexion

Sortie

0
1
2
3
4

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal