SetTimeout est souvent utilisé pour retarder l'exécution d'une fonction et est utilisé comme:
La copie de code est la suivante:
setTimeout (function () {
…
}, temps mort);
Parfois, Settimeout (fonction…, 0) est utilisé pour le traitement asynchrone; Par exemple:
La copie de code est la suivante:
fonction f () {
… // Préparez-vous
setTimeout (function () {
…. // faire quelque chose
}, 0);
retour …;
}
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:
La copie de code est la suivante:
pour (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 sont susceptibles de penser que le programme imprimera 0… 9, mais le résultat est que 10 sont en effet imprimés 10;
Le problème est que lorsque la boucle est terminée, la fonction est exécutée, et je suis devenu 10, et 10 est utilisé dans console.log (i)!
Le but de vous ajouter est d'imprimer 0… 9, afin que vous puissiez modifier la méthode et utiliser les paramètres de fonction pour enregistrer 0… .9 (en fait, il utilise également les fermetures):
La copie de code est la suivante:
pour (var i = 0; i <10; i ++) {
setTimeout ((fonction (i) {
return function () {
console.log (i);
}
}) (i), 0);
}