setTimeout ist nicht Teil des Kern-JavaScript. Ja, Sie haben richtig gehört. Es ist Teil der vom Browser bereitgestellten Web-APIs (in einer Webumgebung) oder der Node.js-APIs in einer serverseitigen Umgebung.
Wie wir alle wissen, verwendet die setTimeout-Methode die CB-Funktion als Parameter. Der andere Parameter ist die Zeit in ms, nach der der CB ausgeführt werden muss.
Aber warten Sie, es ist nicht notwendig, dass setTimeout immer zu bestimmten Zeitparametern ausgeführt wird. Wenn unser Aufrufstapel oder beispielsweise unser Hauptthread durch einen beliebigen Code blockiert wird, wird setTimeout sofort im Aufrufstapel ausgeführt, nachdem der Blockierungscode abgeschlossen ist. Bis dahin bleibt es in der Browser-Rückrufwarteschlange oder Aufgabenwarteschlange gespeichert.
console.log("HELLO"); setTimeout(() => console.log("Timeout executed"), 5000); //should be execute after 5sec let start = new Date().getTime(); let end= start; while (end < start + 10000){ end= new Date.getTime(); } //This loop will block the main thread for 10sec console.log("Time Expire"); //output--- //HELLO //Time Expire //Timeout executed (Immediately just after Time expire)
Es gibt auch einen Fall, wenn wir in setTimeout eine Zeit von 0 ms angeben. Wird es in der Reihenfolge wie bei der normalen Codeausführung ausgeführt?
Die Antwort lautet „Nein“, da setTimeout im Gegensatz zu anderen Funktionen, die im Aufrufstapel sofort zuerst ausgeführt werden, zuerst in die CB-Warteschlange gelangt.
Das obige ist der detaillierte Inhalt vonsetTimeout() benötigt mehr Zeit als in param angegeben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!