Heim >Web-Frontend >js-Tutorial >Probleme, auf die Sie achten müssen, wenn Sie die Abschlussfunktion der setTimeout()_javascript-Tipps von Javascript verwenden

Probleme, auf die Sie achten müssen, wenn Sie die Abschlussfunktion der setTimeout()_javascript-Tipps von Javascript verwenden

WBOY
WBOYOriginal
2016-05-16 16:35:531465Durchsuche

setTimeout wird häufig verwendet, um die Ausführung einer bestimmten Funktion zu verzögern. Die Verwendung ist:

Code kopieren Der Code lautet wie folgt:

setTimeout(function(){

}, Zeitüberschreitung);

Manchmal wird setTimeout(function...,0) für die asynchrone Verarbeitung verwendet, zum Beispiel:

Code kopieren Der Code lautet wie folgt:

Funktion f(){
… // mach dich bereit
setTimeout(function(){
…. // etwas tun
}, 0);

zurück …;
}

Funktion f kehrt vor dem durch setTimeout festgelegten Funktionsprozessor zurück;

Seien Sie besonders vorsichtig, wenn Sie die asynchrone Verarbeitung verwenden, insbesondere wenn Sie Abschlussfunktionen verwenden

Zum Beispiel:

Code kopieren Der Code lautet wie folgt:
for(var i = 0; i < 10; i ){
setTimeout(function(){
console.log(i);
}, 0);
}
Studenten, die diese Methode zum ersten Mal verwenden, denken vielleicht, dass das Programm 0...9 druckt, aber es druckt tatsächlich 10 10s

; Das Problem besteht darin, dass nach Abschluss der Schleife die Funktion ausgeführt wird und i zu 10 geworden ist, was 10 entspricht, die in console.log(i) verwendet wird!

Wenn Sie 0...9 ausgeben möchten, können Sie die Art und Weise ändern und Funktionsparameter verwenden, um 0...9 zu speichern (tatsächlich werden auch Verschlüsse verwendet):

Code kopieren Der Code lautet wie folgt:
for(var i = 0; i < 10; i ){
setTimeout((function(i){
Rückgabefunktion(){
console.log(i);
}
})(i), 0);
}

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn