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

Docker-Compose-Installation DB2-Datenbankbetrieb

Es ist mühsam, die db2-Datenbank direkt auf dem H...

Datendiebstahl mit CSS in Firefox

0x00 Einführung Vor einigen Monaten habe ich eine...

Code zum Aktivieren von IE8 im IE7-Kompatibilitätsmodus

Das beliebteste Tag ist IE8 Browser-Anbieter geben...

N Möglichkeiten, Elemente mit CSS zu zentrieren

Inhaltsverzeichnis Vorwort Zentrieren von Inline-...

MariaDB-Remote-Login-Konfiguration und Problemlösung

Vorwort: Der Installationsvorgang wird nicht im D...

Was ist Software 404 und 404-Fehler und was ist der Unterschied zwischen ihnen

Zunächst einmal: Was ist 404 und Soft 404? 404: Ei...

Webpack erstellt ein Gerüst zum Verpacken von TypeScript-Code

Erstellen eines Ordners Verzeichnisstruktur: daba...

Detaillierte Analyse des virtuellen Nginx-Hosts

Inhaltsverzeichnis 1. Virtueller Host 1.1 Virtuel...

MySQL-Beispiel zum Abrufen des heutigen und gestrigen Zeitstempels 0:00

Wie unten dargestellt: Gestern: UNIX_TIMESTAMP(CA...

Detaillierte Erklärung verschiedener Bildformate wie JPG, GIF und PNG

Jeder weiß, dass Bilder auf Webseiten im Allgemein...