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

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

高洛峰
高洛峰original
2017-02-08 16:06:391017parcourir

Cet article présente principalement les problèmes auxquels il faut prêter attention lors de l'utilisation de la fonction de fermeture de setTimeout(0) de Javascript. Les amis dans le besoin peuvent s'y référer

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

Copier le code Le code est le suivant :

setTimeout(function(){
…
}, timeout);

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

Copier le code Le code est le suivant :

function f(){
… // get ready
setTimeout(function(){
…. // do something
}, 0);
  
return …;
}

Avant le processeur de fonction défini par setTimeout, la fonction f renvoie ;

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 Code comme suit :

for(var i = 0 ; i < 10; i++){
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 le résultat affichera en effet 10 10s ;

Le problème est que lorsque la boucle est terminée, la fonction est exécutée et i est devenu 10, ce qui est 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) :

Copiez le code Le code est le suivant :

for(var i = 0 ; i < 10; i++){
setTimeout((function(i){
return function(){
console.log(i);
}
})(i), 0);
}
Pour d'autres problèmes auxquels il faut prêter attention lors de l'utilisation de la fonction de fermeture de setTimeout de Javascript ( ), veuillez faire attention au site Web PHP chinois pour les articles connexes !

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