Vorwort: js ist eine Single-Thread-Sprache, daher ist es unmöglich, dass es asynchron ist. Die Hostumgebung von js (wie Browser, Knoten) ist jedoch multithreaded. Die Hostumgebung sorgt dafür, dass js in gewisser Weise asynchrone Eigenschaften hat (ereignisgesteuert). In js unterteilen wir alle Aufgaben im Allgemeinen in zwei Kategorien: synchrone Aufgaben und asynchrone Aufgaben. Unter den asynchronen Aufgaben gibt es noch feinere Unterteilungen, nämlich Mikrotasks und Makrotasks. 1. Konzept1.1 Makroaufgaben Makroaufgaben ---- Um sicherzustellen, dass die internen JS-Aufgaben und 1.2 Mikroaufgaben Mikrotasks ---- Bei Mikrotasks handelt es sich im Allgemeinen um Aufgaben, die unmittelbar nach Abschluss der aktuellen synchronen Aufgabe ausgeführt werden müssen, z. B. das Bereitstellen von Feedback zu einer Reihe von Aktionen, oder um Aufgaben, die asynchron ausgeführt werden müssen, ohne dass eine neue Aufgabe zugewiesen werden muss, wodurch der Leistungsaufwand verringert werden kann. 2. AusführungsauftragSchauen wir uns zunächst einen Codeabschnitt an und besprechen dann die Ausführungsreihenfolge: console.log(1) setzeTimeout(() => { console.log(2) }) Versprechen.auflösen().dann(() => { console.log(3) }) console.log(4) Das vom obigen Code ausgegebene Ergebnis ist 1 4 3 2. Aus dem obigen Code können wir schließen, dass ihre Ausführungsreihenfolge ist: Führen Sie zuerst den synchronen Code aus. Wenn Sie auf eine asynchrone Makroaufgabe stoßen, fügen Sie die asynchrone Makroaufgabe in die Makroaufgabenwarteschlange ein. Wenn Sie auf eine asynchrone Mikroaufgabe stoßen, fügen Sie die asynchrone Mikroaufgabe in die Mikroaufgabenliste ein. Wenn alle synchronen Codes ausgeführt wurden, übertragen Sie die asynchrone Mikroaufgabe aus der Liste zur Ausführung an den Hauptthread. Nachdem die asynchrone Mikroaufgabe ausgeführt wurde, übertragen Sie die asynchrone Makroaufgabe aus der Warteschlange zur Ausführung an den Hauptthread. Der Zyklus wird fortgesetzt, bis alle Aufgaben ausgeführt wurden.
3. Aufgabenbeziehung Makroaufgaben sind der Mainstream. Wenn Auf jede Makrotask kann eine Mikrotask-Warteschlange folgen. Wenn sich in der Mikrotask-Warteschlange Anweisungen oder Methoden befinden, werden diese zuerst ausgeführt. Wenn nicht, beginnen Sie mit der Ausführung der nächsten Makroaufgabe, bis alle Makroaufgaben abgeschlossen sind. 4. AufgabendetailsWarum gibt es nach Makrotasks noch Mikrotasks? Das liegt daran, dass Makrotasks zu viel Leistung beanspruchen. Wenn einige zuvor vorbereitete Methoden benötigt werden und zuletzt ausgeführt werden und Sie keine neue Makrotask hinzufügen möchten, können Sie diese Methoden nacheinander in die Mikrotask-Warteschlange stellen. Nachdem der Code in dieser Makrotask ausgeführt wurde, wird die Mikrotask-Warteschlange ausgeführt. Wenn daher der aktuelle synchrone Code ausgeführt wird und eine asynchrone Aufgabe auftritt, wird sie, wenn es sich um eine asynchrone Makroaufgabe handelt, in die nächste Runde der Makroaufgabenwarteschlange gestellt; wenn es sich um eine asynchrone Mikroaufgabe handelt, wird sie in die Mikroaufgabenwarteschlange gestellt und folgt der aktuellen Makroaufgabe. Eine Mikrotask entspricht dem kleinen Ende einer Makrotask. Wenn also die aktuelle Makrotask ausgeführt wird, wird die dahinter wartende asynchrone Mikrotask sofort in die Warteschlange gestellt, um weiter ausgeführt zu werden. Die asynchrone Makrotask muss bis zur nächsten Runde warten, was dazu führt, dass die asynchrone Mikrotask vor der Makrotask ausgeführt wird. Dies ist das Ende dieses Artikels über Das könnte Sie auch interessieren:
|
<<: Eine kurze Diskussion über die Rolle leerer HTML-Links
>>: Interpretation und Analyse von HTTP-Header-Informationen (detaillierte Zusammenfassung)
Inhaltsverzeichnis 1. Einführung in Sysbench #Pro...
Zunächst müssen wir wissen, was ein Zustandsmanag...
Ohne weitere Umschweife werde ich den Code direkt...
Wählen Sie bei der Installation der CentOS7-Versi...
Wie wähle ich mit CSS rekursiv alle untergeordnet...
Inhaltsverzeichnis 1. Vue-Lebenszyklus 2. Hook-Fu...
Informationen zur ersten Installation der MySQL-5...
Inhaltsverzeichnis 1. Hintergrund 2. Was ist eine...
Die heute zu implementierende Funktion ist die fo...
Vorwort Ab React 16 wurde das Konzept der Fehlerg...
Inhaltsverzeichnis 1. Requisiten 2..synchronisier...
Inhaltsverzeichnis 1. Wo wird der selbstinkrement...
Wenn Sie das Win10-System installiert haben und e...
Inhaltsverzeichnis 01 Häufige Fehler 1 02 Häufige...
Inhaltsverzeichnis So stellen Sie den MySQL-Diens...