Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erklärung des JavaScript-Timers

Detaillierte Erklärung des JavaScript-Timers

php中世界最好的语言
php中世界最好的语言Original
2018-03-16 15:32:331629Durchsuche

Dieses Mal erkläre ich Ihnen ausführlich den Timer von JavaScript. Was sind die Vorsichtsmaßnahmen bei der Verwendung von Timer von JavaScript? wie folgt Dies ist ein praktischer Fall, schauen wir ihn uns an.

Zusätzlich zum Platzieren von Ereignissen von asynchronen Aufgaben kann „TaskQueue“ auch zeitgesteuerte Ereignisse platzieren, d. h. angeben, wie lange danach ein Code ausgeführt wird. Dies wird als „Timer“ (Timer)-Funktion bezeichnet, bei der es sich um Code handelt, der regelmäßig ausgeführt wird.

Die Timer-Funktion wird hauptsächlich durch die beiden -Funktionen setTimeout() und setInterval() vervollständigt. Der Unterschied besteht darin, dass der von erstere angegebene Code identisch ist Letzteres wird wiederholt ausgeführt. Im Folgenden wird hauptsächlich setTimeout () erläutert.

setTimeout() akzeptiert zwei Parameter, der erste ist die Rückruffunktion und der zweite ist die Anzahl der Millisekunden, um die die Ausführung verzögert wird.

console.log(1);setTimeout(function(){console.log(2);},1000);console.log(3);

Das Ausführungsergebnis des oben Gesagten Code ist 1, 3, 2, weil setTimeout() die Ausführung der zweiten Zeile bis 1000 Millisekunden später verzögert.

Wenn der zweite Parameter von setTimeout() auf 0 gesetzt ist, bedeutet dies, dass nach der Ausführung des aktuellen Codes (der Ausführungsstapel wird geleert) die angegebene Rückruffunktion sofort ausgeführt wird (Intervall von 0 Millisekunden).

setTimeout(function(){console.log(1);}, 0);console.log(2);

Das Ausführungsergebnis des obigen Codes ist immer 2, 1, Denn erst nach der Ausführung der zweiten Zeile führt das System die Rückruffunktion in der „Aufgabenwarteschlange“ aus.

Kurz gesagt besteht die Bedeutung von setTimeout(fn,0) darin, eine Aufgabe anzugeben, die in der frühesten verfügbaren Leerlaufzeit des Hauptthreads ausgeführt werden soll, also so früh wie möglich ausgeführt werden soll. Es fügt am Ende der „Aufgabenwarteschlange“ ein Ereignis hinzu, sodass es erst ausgeführt wird, wenn die Synchronisierungsaufgabe und die vorhandenen Ereignisse in der „Aufgabenwarteschlange“ verarbeitet wurden.

Der HTML5-Standard schreibt vor, dass der Mindestwert (kürzestes Intervall) des zweiten Parameters von setTimeout() nicht weniger als 4 Millisekunden betragen darf. Wenn er niedriger als dieser Wert ist, wird er automatisch erhöht. Zuvor haben ältere Browser das Mindestintervall auf 10 Millisekunden festgelegt. Darüber hinaus werden diese DOM-Änderungen (insbesondere solche, die das erneute Rendern von Seiten beinhalten) normalerweise nicht sofort, sondern alle 16 Millisekunden ausgeführt. Derzeit ist der Effekt der Verwendung von requestAnimationFrame () besser als der von setTimeout ().

Es ist zu beachten, dass setTimeout() das Ereignis nur in die „Aufgabenwarteschlange“ einfügt. Der Hauptthread muss warten, bis die Ausführung des aktuellen Codes (Ausführungsstapels) abgeschlossen ist, bevor der Hauptthread die Rückruffunktion ausführt gibt an. Wenn der aktuelle Code lange dauert, kann es lange dauern, sodass nicht garantiert werden kann, dass die Rückruffunktion zu dem von setTimeout () angegebenen Zeitpunkt ausgeführt wird.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie auf der chinesischen PHP-Website Andere verwandte Artikel!

Empfohlene Lektüre:

Ereignisschleife des JavaScript-Ausführungsmechanismus

Ereignisse und Rückruffunktionen des JavaScript-Ausführungsmechanismus

Aufgabenwarteschlange des JavaScript-Ausführungsmechanismus

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des JavaScript-Timers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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