Erläuterung der Anwendungsfälle von JavaScript setTimeout und setTimeinterval

Erläuterung der Anwendungsfälle von JavaScript setTimeout und setTimeinterval

Mit beiden Methoden kann ein JavaScript-Code nach einer festgelegten Zeitspanne ausgeführt werden, aber jede hat ihre eigenen Anwendungsszenarien.

Tatsächlich ist die Syntax von setTimeout und setInterval dieselbe. Sie alle haben zwei Parameter, einer ist die auszuführende Codezeichenfolge und der andere ist das Zeitintervall in Millisekunden, nach dem der Code ausgeführt wird.

Es gibt jedoch einen Unterschied zwischen diesen beiden Funktionen. Nachdem setInterval den Code einmal ausgeführt hat, wird er nach einem festgelegten Zeitintervall automatisch wiederholt, während setTimeout den Code nur einmal ausführt.

Obwohl es so aussieht, als ob setTimeout nur auf Ein-/Aus-Aktionen angewendet werden kann, können Sie eine Funktionsschleife erstellen, um setTimeout wiederholt aufzurufen und so wiederholte Vorgänge zu erreichen:

Show Time();
Funktion showTime()
{
    var heute = neues Datum();
    alert("Es ist: " + today.toString());
    setTimeout("showTime()", 5000);
}

Sobald diese Funktion verwendet wird, wird die Uhrzeit alle 5 Sekunden angezeigt. Wenn Sie setInterval verwenden, lautet der entsprechende Code wie folgt:

setInterval("showTime()", 5000);
Funktion showTime()
{
    var heute = neues Datum();
    alert("Es ist: " + today.toString());
}

Diese beiden Methoden sehen möglicherweise sehr ähnlich aus und liefern ähnliche Ergebnisse. Der größte Unterschied zwischen beiden besteht jedoch darin, dass die Methode setTimeout die Funktion showTime nicht alle 5 Sekunden ausführt. Sie führt die Funktion showTime 5 Sekunden nach jedem Aufruf von setTimeout aus. Dies bedeutet, dass, wenn die Ausführung des Hauptteils der Funktion „showTime“ 2 Sekunden dauert, die gesamte Funktion alle 7 Sekunden ausgeführt wird. Allerdings ist setInterval nicht an die aufgerufene Funktion gebunden, sondern wiederholt die Funktion lediglich in einem bestimmten Intervall.

Wenn Sie eine Aktion nach einem festgelegten Zeitintervall genau ausführen müssen, verwenden Sie am besten setInterval. Wenn Sie sich nicht durch kontinuierliche Aufrufe gegenseitig stören möchten, insbesondere wenn jeder Funktionsaufruf umfangreiche Berechnungen und eine lange Verarbeitungszeit erfordert, verwenden Sie am besten setTimeout.

Verwendung von Funktionszeigern

Der erste Parameter der beiden Timing-Funktionen ist eine Codezeichenfolge. Tatsächlich kann dieser Parameter auch ein Funktionszeiger sein, aber IE 5 unter Mac unterstützt dies nicht.

Wenn Sie einen Funktionszeiger als zweiten Parameter der Funktionen setTimeout und setInterval verwenden, können diese eine an anderer Stelle definierte Funktion ausführen:

setTimeout(showTime, 500);
Funktion showTime()
{
    var heute = neues Datum();
    alert("Es ist: " + today.toString());
}

Darüber hinaus können anonyme Funktionen auch als Inline-Funktionen deklariert werden:

setTimeout(Funktion(){var heute = neues Datum();
alert("Es ist: " + today.toString());}, 500);

diskutieren

Wenn die Zeitfunktion nicht verarbeitet wird, führt setInterval denselben Code weiterhin aus, bis das Browserfenster geschlossen wird oder der Benutzer auf eine andere Seite wechselt. Es gibt jedoch weiterhin Möglichkeiten, die Ausführung der Funktionen setTimeout und setInterval zu beenden.

Wenn der setInterval-Aufruf abgeschlossen ist, wird eine Timer-ID zurückgegeben, mit der in Zukunft auf den Timer zugegriffen werden kann. Wenn die ID an clearInterval übergeben wird, kann die Ausführung des aufgerufenen Prozesscodes beendet werden. Die konkrete Implementierung lautet wie folgt:

var Intervallprozess = setInterval("alert('ZIEL!')", 3000);
var stopGoalLink = document.getElementById("stopGoalLink");
attachEventListener(stopGoalLink, "klicken", stopGoal, false);
Funktion stopGoal()
{
    Intervall löschen(Intervallprozess);
}

Solange auf stopGoalLink geklickt wird, wird „intervalProcess“ abgebrochen und „intervalProcess“ wird in Zukunft nicht wiederholt ausgeführt, unabhängig davon, wann darauf geklickt wird. Wenn setTimeout innerhalb der Timeout-Periode abgebrochen wird, kann dieser Beendigungseffekt auch bei setTimeout wie folgt erreicht werden:

var timeoutProcess = setTimeout("alert('ZIEL!')", 3000);
var stopGoalLink = document.getElementById("stopGoalLink");
attachEventListener(stopGoalLink, "klicken", stopGoal, false);
Funktion Stoppziel() {
   Zeitüberschreitung löschen(Zeitüberschreitungsprozess);
}

Damit ist dieser Artikel über die detaillierten Anwendungsfälle von JavaScript setTimeout und setTimeinterval abgeschlossen. Weitere relevante Inhalte zur Verwendung von js setTimeout und setTimeinterval finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • JavaScript-Datenvisualisierung: ECharts-Kartenerstellung
  • Super detaillierte grundlegende JavaScript-Syntaxregeln
  • Detaillierte Erklärung der obligatorischen und impliziten Konvertierung von Typen in JavaScript
  • JavaScript implementiert das Ändern der Farbe einer Webseite über einen Schieberegler
  • Detaillierte Erklärung der Unterschiede zwischen var, let und const in JavaScript es6
  • Detaillierte Erklärung des this-Zeigeproblems in JavaScript
  • Fallstudie zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden
  • Detaillierte Erklärung zur Verwendung des Arguments-Objekts in JavaScript
  • Beispiel für die JavaScript-Funktion „CollectGarbage“
  • Detaillierte Erklärung von BOM und DOM in JavaScript
  • JavaScript-Timer zur Realisierung einer zeitlich begrenzten Flash-Sale-Funktion
  • JavaScript zum Implementieren einer zeitlich begrenzten Flash-Sale-Funktion
  • JavaScript-Objekte (Details)

<<:  Beispielanalyse für MySQL-Transaktionen, Isolationsebenen und Sperrenverwendung

>>:  Ubuntu 19.10 aktiviert SSH-Dienst (detaillierter Prozess)

Artikel empfehlen

Zabbix benutzerdefinierte Überwachung Nginx Status Implementierungsprozess

Inhaltsverzeichnis Zabbix benutzerdefinierte Über...

Detaillierte Erklärung des Grid-Layouts und des Flex-Layouts der Anzeige in CSS3

Das Gitterlayout weist einige Ähnlichkeiten mit d...

Detailliertes Tutorial zur Verwendung des Befehls xargs unter Linux

Hallo zusammen, ich bin Liang Xu. Sind Sie bei de...

Lösen Sie das Spleißproblem beim Löschen von Bedingungen in myBatis

Ich habe heute gerade Mybatis gelernt und einige ...

CSS3 + Bézierkurve zum Erzielen eines skalierbaren Eingabesuchfeldeffekts

Und hier nun ohne weitere Umschweife die Renderin...

Vue implementiert kleine Suchfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Einführung in Spark und Vergleich mit Hadoop

Inhaltsverzeichnis 1. Spark vs. Hadoop 1.1 Nachte...

Gängige Methoden zur Optimierung der Docker-Imagegröße

Die Docker-Images, die wir normalerweise erstelle...

Lösung für die Protokollpersistenzlösung des Nginx-Ingress-Controllers

Kürzlich habe ich auf einem öffentlichen Konto ei...