Wenn wir beispielsweise drei Nachrichten mit einer Verzögerung von einer Sekunde an der Konsole protokollieren müssen, können wir dies nicht mit der Schlaffunktion in JavaScript tun, da sie nicht verfügbar ist. Aber wir können das umgehen, indem wir die verwenden setTimeout () Funktion.
Was ist die setTimeout () -Methode?
Der setTimeout () Die Methode wird verwendet, um einen Timer einzustellen, um die Ausführung von Code zu verzögern. Es führt den angegebenen Code -Stück aus, nachdem der Timer abgelaufen ist.
Viele Entwickler, die mit dem gearbeitet haben schlafen() Funktion finden setTimeout () verwirrend sein. Das liegt daran, dass sie das verwechseln setTimeout () Funktion als eine Version der schlafen() Funktion in JavaScript.
Leider die setTimeout () Hat seine eigenen Regeln und funktioniert nicht so wie die schlafen() Funktion dies macht JavaScript -Entwickler mit genialen Lösungen, damit es als funktioniert schlafen() Funktion.
In diesem Leitfaden werden wir uns mehrere solcher Lösungen ansehen und erklären, wie wir die verwenden können setTimeout () Funktion zur Pause der Ausführung des JavaScript -Quellcodes und Warten zwischen aufeinanderfolgenden Codezeilen.
im Gegensatz zu den schlafen() Funktion, wenn wir nur eine Verzögerung von einer Sekunde mit der setTimeout () Methode zwischen den Zeilen des JavaScript -Codes funktioniert nicht:
setTimeout (1000)Der Code im obigen Beispiel wird ohne Verzögerung ausgeführt, als ob der setTimeout () Funktion existiert nicht.
Das Problem mit dem oben angegebenen Code ist, dass die setTimeout () Methode verzögert nur die Ausführung der Funktion, die als Rückruffunktion an sie übergeben wird. Wir gaben jedoch nur einen “VerzögerungArgument, wenn es tatsächlich zwei verschiedene Argumente bekommen soll. Das erste Argument soll eine Rückruffunktion sein, und das zweite Argument soll das “sein“Verzögerung”. Versuchen wir nun, das zu tun und zu sehen, was passiert:
setTimeout (() => Konsole.log ("nach einer Sekunde anzeigen"), 1000)Diesmal die setTimeout () Die Funktion funktioniert jedoch nicht, wie sie soll, da beide Konsolenprotokollnachrichten gleichzeitig angezeigt werden, anstatt eine Verzögerung von 1000 Millisekunden zwischen ihnen zu haben.
Warum hat SetTimeout () gescheitert??
Der Grund warum setTimeout () scheitert im obigen Beispiel, dass die setTimeout () Die Funktion selbst funktioniert synchron im JavaScript-Code, aber die Call-Back-Funktion in der Funktion setTimeout () erstellt einen neuen Eintrag in der asynchronen Task-Warteschlange, die nach der angegebenen Zeit ausgeführt wird.
Seit der angegebenen Zeit in beiden setTimeout () Die Funktion war die gleiche und sie wurden gleichzeitig aufgrund der Synchron -Code -Ausführung ausgeführt, wenn JavaScript (mit einer Verzögerung von nur wenigen Millisekunden) alle Einträge in der asynchronen Task -Warteschlange gleichzeitig ausgeführt werden.
Wie du sehen kannst, setTimeout () ist keine genaue Kopie der schlafen() Funktion, sondern stellt nur Code für die spätere Ausführung auf. Es stellt sich also die Frage, wie wir es wie a funktionieren lassen schlafen() Funktion. Wir können dies tun, indem wir zunehmende Zeitüberschreitungen verwenden, wenn wir das aufrufen setTimeout () Funktion:
setTimeout (() => Konsole.log ("nach einer Sekunde anzeigen"), 1000)Dies funktioniert daran.
Die oben angegebene Methode ist die Methode, mit der die Ausführung einiger Teile des Codes verzögert wird, während die anderen Teile synchron ausgeführt werden. Wenn Sie jedoch die Ausführung des gesamten JavaScript -Code einstellen möchten, während Sie asynchron ausführen, müssen Sie einen Benutzerdefinierter erstellen schlafen() Funktion.
Wie man eine Schlaffunktion schreibt
In JavaScript können wir einen benutzerdefinierten erstellen schlafen() Funktion durch Verwendung von Versprechen, Asynchronisation und erwarten Sie. Das funktioniert genau wie ein schlafen() Funktion würde in jeder anderen Sprache.
Dieser Brauch jedoch schlafen() Die Funktion muss mit dem Keyword für das Warten verwendet werden und sollte von innerhalb von asynchronen Funktionen aufgerufen werden.
var sleep = (delay) => neues Versprechen ((Resolve) => setTimeout (Auflösung, Verzögerung)))Durch die Verwendung dieser benutzerdefinierten Build Sleep -Methode können Sie die Ausführung des JavaScript -Code für die gewünschte Zeitspanne einstellen.
Abschluss
JavaScript hat nicht das schlafen() Funktion standardmäßig, um die Ausführung des Codes zu verzögern, aber ihre asynchrone Natur kann verwendet werden, um dieselbe Aufgabe zu erreichen. Der eingebaute setTimeout () Die Methode kann verwendet werden, um die Ausführung von Code zu verzögern, aber den Code wirklich asynchron in JavaScript zu machen und ihn wie das funktionieren zu lassen schlafen() Funktion müssen wir die Versprechen, die auf erwarteten und asynchronen Funktionen verwenden. In diesem Artikel haben wir gelernt, benutzerdefinierte zu erstellen schlafen() Funktionen in JavaScript.