


Was bedeutet setTimeout(..., 0ms) in JavaScript wirklich? (Ereignisschleife erklärt!)
Okay, lasst uns diese ganze setTimeout-Sache mit 0 ms aufschlüsseln. Auf den ersten Blick würde man denken: „Bro, 0 ms bedeutet, dass es sofort ausgeführt wird, oder?“ Aber JavaScript hat seine eigene Ausstrahlung und 0 ms ist nicht so augenblicklich, wie man es erwarten würde. Lassen Sie uns das gemeinsam herausfinden.
Der Kodex:
Hier ist der Code, den wir analysieren:
const promise = new Promise((resolve, reject) => { console.log(1); setTimeout(() => { console.log("timerStart"); resolve("success"); console.log("timerEnd"); }, 0); console.log(2); }); promise.then((res) => { console.log(res); }) console.log(4);
Und die Ausgabe?
1 2 4 timerStart success timerEnd
Die große Frage: Was passiert mit 0 ms?
Wenn Sie setTimeout(() => { ... }, 0) sehen, hat es das Gefühl, dass der darin enthaltene Code sofort nach 0 ms ausgeführt wird. Aber nein, JavaScript sagt: „Bruder, ich habe mein eigenes System, warte, bis du dran bist!“
JavaScript-System: Ereignisschleife
JavaScript führt Code nicht nur direkt aus – es verfügt über ein cooles System namens Ereignisschleife zur Verarbeitung von Aufgaben. Stellen Sie sich das so vor:
Hauptaufgaben (synchron):
Dinge wie console.log() werden zuerst ausgeführt. Dies sind die direkten, direkten Aufgaben.Mikroaufgaben (Versprechen):
Als nächstes kommen Versprechen, noch vor den Timern. Es ist, als hätten sie ein VIP-Ticket.Aufgabenwarteschlange (Timer wie setTimeout):
Timer rücken in die hintere Reihe und laufen erst, nachdem die Mikroaufgaben erledigt sind. Selbst wenn Sie ihm 0 ms geben, wartet es.
Den Code aufschlüsseln
Lassen Sie uns Schritt für Schritt sehen, was passiert:
-
Versprechen erstellt:
- console.log(1) wird sofort ausgeführt.
- setTimeout(() => { ... }, 0) wird zur Aufgabenwarteschlange hinzugefügt.
- console.log(2) wird sofort ausgeführt.
-
Promise .then():
- Der .then()-Rückruf wird zur Mikrotask-Warteschlange hinzugefügt.
-
console.log(4):
- Wird direkt ausgeführt, da es Teil des Hauptskripts ist.
-
Microtask Runs (VIP):
- Das Versprechen wird aufgelöst, sodass der .then()-Rückruf „Erfolg“ protokolliert.
-
Aufgabenwarteschlangenläufe:
- Der setTimeout-Callback ist endlich an der Reihe: protokolliert „timerStart“ und „timerEnd“.
Warum bedeutet 0 ms nicht „Jetzt sofort“?
Auch wenn Sie 0 ms angegeben haben, wird setTimeout immer verzögert. JavaScript schiebt es in die Aufgabenwarteschlange, egal was passiert. Das System löscht zunächst alle synchronen Aufgaben und Mikroaufgaben (Versprechen), bevor es die Aufgabenwarteschlange berührt.
Also, in einfachen Worten:
Bei 0 ms geht es nicht um die Zeit – es geht darum, darauf zu warten, bis man an der Reihe ist.
Stellen Sie es sich so vor
Stellen Sie sich vor, Sie stehen in der Warteschlange für eine Achterbahnfahrt:
- Synchroncode: Personen, die Fast-Track-Tickets gekauft haben – sie sind die Ersten, keine Debatte.
- Versprechen: Leute mit VIP-Pässen – sie sind die nächsten in der Reihe, auch wenn sie zu spät kommen.
- Timer (wie setTimeout): Normale Leute ohne Ausweise. Selbst wenn Sie ihnen sagen: „0 ms warten“, müssen sie immer noch in der regulären Warteschlange stehen.
Abschließende Zusammenfassung der Ausgabe
Hier ist die Reihenfolge der Ereignisse in unserem Code:
- console.log(1) (synchron)
- console.log(2) (synchron)
- console.log(4) (synchron)
- „Erfolg“ aus der .then() (Microtask)
- console.log("timerStart") (Aufgabenwarteschlange)
- console.log("timerEnd") (Aufgabenwarteschlange)
Warum ist das wichtig?
Wenn Sie verstehen, wie 0 ms wirklich funktionieren, können Sie besseren asynchronen Code schreiben. Es ist auch ein cooler Trick, ihn Ihren Freunden zu erklären, wenn sie zufällige Verzögerungen in ihrem JavaScript beheben.
Wenn Sie also das nächste Mal setTimeout(() => { ... }, 0) sehen, denken Sie daran – es geht nicht um die Zeit; Es geht um Priorität!
Das obige ist der detaillierte Inhalt vonWas bedeutet setTimeout(..., ) in JavaScript wirklich? (Ereignisschleife erklärt!). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

In dem Artikel werden effektives JavaScript -Debuggen mithilfe von Browser -Entwickler -Tools, der Schwerpunkt auf dem Festlegen von Haltepunkten, der Konsole und der Analyse der Leistung erörtert.

Bringen Sie Matrix -Filmeffekte auf Ihre Seite! Dies ist ein cooles JQuery -Plugin, das auf dem berühmten Film "The Matrix" basiert. Das Plugin simuliert die klassischen grünen Charakter-Effekte im Film und wählen Sie einfach ein Bild aus, und das Plugin verwandelt es in ein mit numerischer Zeichen gefüllte Bild im Matrix-Stil. Komm und probiere es aus, es ist sehr interessant! Wie es funktioniert Das Plugin lädt das Bild auf die Leinwand und liest die Pixel- und Farbwerte: Data = ctx.getImagedata (x, y, setting.grainize, setting.grainesize) .data Das Plugin liest geschickt den rechteckigen Bereich des Bildes und berechnet JQuery, um die durchschnittliche Farbe jedes Bereichs zu berechnen. Dann verwenden Sie

In diesem Artikel werden Sie mit der JQuery -Bibliothek ein einfaches Bildkarousel erstellen. Wir werden die BXSLIDER -Bibliothek verwenden, die auf JQuery basiert und viele Konfigurationsoptionen zum Einrichten des Karussells bietet. Heutzutage ist Picture Carousel zu einem Muss auf der Website geworden - ein Bild ist besser als tausend Wörter! Nachdem Sie sich entschieden haben, das Bild -Karussell zu verwenden, ist die nächste Frage, wie Sie es erstellen. Zunächst müssen Sie hochwertige, hochauflösende Bilder sammeln. Als nächstes müssen Sie ein Bildkarousel mit HTML und einem JavaScript -Code erstellen. Es gibt viele Bibliotheken im Web, die Ihnen helfen können, Karussell auf unterschiedliche Weise zu erstellen. Wir werden die Open -Source -BXSLIDER -Bibliothek verwenden. Die BXSLIDER -Bibliothek unterstützt reaktionsschnelles Design, sodass das mit dieser Bibliothek gebaute Karussell an alle angepasst werden kann

Datensätze sind äußerst wichtig für den Aufbau von API -Modellen und verschiedenen Geschäftsprozessen. Aus diesem Grund ist das Import und Exportieren von CSV eine häufig benötigte Funktionalität. In diesem Tutorial lernen Sie, wie Sie eine CSV-Datei in einem Angular herunterladen und importieren.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),