Maison >interface Web >js tutoriel >Problèmes auxquels vous devez prêter attention lors de l'utilisation de la fonction de fermeture des astuces setTimeout()_javascript de Javascript

Problèmes auxquels vous devez prêter attention lors de l'utilisation de la fonction de fermeture des astuces setTimeout()_javascript de Javascript

WBOY
WBOYoriginal
2016-05-16 16:35:531463parcourir

setTimeout est souvent utilisé pour retarder l'exécution d'une certaine fonction. L'utilisation est :

.

Copier le code Le code est le suivant :

setTimeout(function(){

}, délai d'attente);

Parfois setTimeout(function...,0) est utilisé pour le traitement asynchrone par exemple :

Copier le code Le code est le suivant :

fonction f(){
… // préparez-vous
setTimeout(function(){
…. // faire quelque chose
}, 0);

revenir …;
>

La fonction f revient avant le processeur de fonction défini par setTimeout

Soyez particulièrement prudent lorsque vous utilisez un traitement asynchrone, en particulier lorsque vous utilisez des fonctionnalités de fermeture

 ;

Par exemple :

Copier le code Le code est le suivant :

pour(var je = 0; je < 10; je ){
setTimeout(function(){
console.log(i);
}, 0);
>

Pour les étudiants qui utilisent cette méthode pour la première fois, ils peuvent penser que le programme imprimera 0...9, mais il imprime en réalité 10 10
Le problème est que lorsque la boucle est terminée, la fonction est exécutée et i est devenu 10, soit 10 utilisé dans console.log(i) !

Si votre objectif est d'imprimer 0...9, alors vous pouvez changer la manière et utiliser les paramètres de fonction pour enregistrer 0...9 (en fait, les fermetures sont également utilisées) :

Copier le code Le code est le suivant :

pour(var je = 0; je < 10; je ){
setTimeout((fonction(i){
fonction de retour(){
console.log(i);
>
})(i), 0);
>
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