JavaScript-Makrotasks und Mikrotasks

JavaScript-Makrotasks und Mikrotasks

Makrotasks und Mikrotasks

  • JavaScript ist eine Single-Thread-Sprache (DOM wird verrückt, wenn es Multi-Thread-Sprache ist)
  • Daher kann jeweils nur eine Aufgabe ausgeführt werden , der sogenannte Hauptthread, der zum Ausführen synchroner Aufgaben verwendet wird.
  • Es gibt außerdem zwei Aufgabenlisten zum Speichern asynchroner Aufgaben, Makroaufgaben und Mikroaufgaben.
  • Die Ausführungsreihenfolge ist: Hauptthread => Mikrotask => Makrotask

Über den Timer

  1. Das Timermodul fügt es in die Makro-Task-Warteschlange ein, wenn der Zeitpunkt erreicht ist
  2. Wenn der Hauptthread keine Aufgaben hat, führt er sie aus. Wenn er Aufgaben hat, wartet er, bis die Ausführung abgeschlossen ist, bevor er fortfährt.
  3. Wenn es zwei Timer mit der gleichen Zeit gibt, wird der obere zuerst und der untere später ausgeführt.
  4. Wenn zwei Timer unterschiedliche Zeiten haben, wird der kürzere Timer zuerst und der längere Timer später ausgeführt.

Notiz:

  • Der ⏲ des Timers wird im Timermodul abgeschlossen und ist nach Abschluss dasselbe wie eine normale asynchrone Aufgabe.
  • In Bezug auf die Zeit kann es aufgrund der langen Zeit der Hauptthread-Übung zu einer Verzögerung kommen


Bildbeschreibung hier einfügen

Über Promises

  • Der Konstruktor von Promise ist eine synchrone Aufgabe
  • Die Ausführungsreihenfolge ist immer: Synchronisierung => Mikrotask => Makrotask
  • In verschachteltem Code kann es in Makrotasks Synchronisation, Makrotasks und Mikrotasks geben. In diesem Fall werden sie in die Warteschlange/den Hauptthread der nächsten Ausführung gestellt, um auf die Ausführung zu warten.
setzeTimeout(() => {
    console.log("Zeitgeber");
    setzeTimeout(() => {
      console.log("Zeitüberschreitung Zeitüberschreitung");
    }, 0);
    neues Versprechen(lösen => {
      console.log("settimeout Versprechen");
      lösen();
    }).then(() => {
      console.log("settimeout dann");
    });
  }, 0);
  neues Versprechen(lösen => {
    console.log("Versprechen");
    lösen();
  }).then(() => {
    console.log("dann");
  });
  Konsole.log("ssss");

Ausführungsreihenfolge: Promise=>ssss=>then=>timer=>settimeout Promise=>settimeout then=>timeout timeout

DOM-Rendering-Aufgaben

Browser-Rendering: CSS+DOM-Ausführung trifft auf JS und JS wird zuerst ausgeführt
Sie können unten so viel js wie möglich einfügen: Vermeiden Sie einen weißen Bildschirm

Gemeinsam genutzter Taskspeicher

Aufgaben werden nicht gleichzeitig ausgeführt, sondern nacheinander geplant. Sie nutzen gemeinsam den Speicher.

Versprechen Sie Mikrotasks, komplexe Aufgaben zu bewältigen

Durch die Verwendung von Promises können Aufgaben in asynchrone Aufgaben umgewandelt werden, sodass sie die Ausführung synchroner Aufgaben nicht beeinträchtigen.

Dies ist das Ende dieses Artikels über JavaScript-Makro- und Mikroaufgaben. Weitere relevante JavaScript-Makro- und Mikroaufgaben finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Details zu Makrotasks und Mikrotasks in JavaScript
  • Eine kurze Diskussion über Makrotasks und Mikrotasks in js
  • Eine kurze Diskussion über die Ausführungsreihenfolge von JavaScript-Makrotasks und Mikrotasks
  • Eine kurze Diskussion über die Prinzipien von JavaScript-Ereignisschleifen-Mikrotasks und Makrotask-Warteschlangen
  • Analyse der JavaScript-Ereignisschleife sowie der Prinzipien von Makro- und Mikro-Tasks
  • JS-Ereignisschleifenmechanismus Ereignisschleifen-Makrotask-Mikrotask-Prinzipanalyse
  • Erläuterung von JavaScript-Mikrotasks und Makrotasks

<<:  Zusammenfassung der grundlegenden Verwendung des $-Symbols in Linux

>>:  Installation und Konfiguration von MySQL 8.0.15 unter Centos7

Artikel empfehlen

Detaillierte Erklärung zur Verwendung des Schlüsselworts ESCAPE in MySQL

MySQL-Escape Escape bedeutet die ursprüngliche Se...

Reines CSS zum Hinzufügen von Stil zur ausgewählten Implementierung (kein Skript)

Ändern Sie den Standardstil der Auswahl, normalerw...

Fallzusammenfassung zur Vue-Komponentenkommunikationsmethode

Inhaltsverzeichnis 1. Übergeordnete Komponente üb...

JavaScript-Closures erklärt

Inhaltsverzeichnis 1. Was ist ein Abschluss? 1.2 ...

Einführung in die Fuzzy-Abfragemethode mit instr in MySQL

Die Verwendung der internen Funktion instr in MyS...

Detaillierte Erklärung des Middleman-Modus von Angular-Komponenten

Inhaltsverzeichnis 1. Mittelsmann-Modell 2. Beisp...

Aktivieren oder Deaktivieren des GTID-Modus in MySQL online

Inhaltsverzeichnis Grundlegende Übersicht GTID on...

React implementiert doppelten Schieberegler zum Querschieben

In diesem Artikel wird der spezifische Code für R...

jQuery-Plugin zur Implementierung des Dashboards

Das jQuery-Plug-In implementiert das Dashboard zu...

JavaScript navigator.userAgent erhält Browserinformationen – Fallerklärung

Der Browser ist für uns wahrscheinlich das vertra...