Heim > Web-Frontend > js-Tutorial > setTimeout() benötigt mehr Zeit als in param angegeben

setTimeout() benötigt mehr Zeit als in param angegeben

Barbara Streisand
Freigeben: 2025-01-04 21:48:40
Original
1014 Leute haben es durchsucht

setTimeout() takes more time than given time in param

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)
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage