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

Implementierung von MySQL Multi-version Concurrency Control MVCC

Inhaltsverzeichnis Was ist MVCC MVCC-Implementier...

Erste Schritte mit MySQL Sharding

Vorwort Relationale Datenbanken werden eher zu Sy...

Starten Sie eine lokale Kubernetes-Umgebung mit Kind und Docker

einführen Haben Sie schon einmal einen ganzen Tag...

CSS3 erzielt verschiedene Randeffekte

Durchscheinender Rand Ergebnis: Implementierungsc...

MySQL-Datenbank-Indexreihenfolge durch Sortierung – detaillierte Erklärung

Inhaltsverzeichnis Die Ursache des Vorfalls Sorti...

So installieren Sie MySQL auf CentOS und richten den Fernzugriff ein

1. Laden Sie die MySQL-Repo-Quelle herunter $ wge...

Detaillierte Einführung in den MySql-Index und korrekte Verwendungsmethode

Detaillierte Einführung in den MySql-Index und ko...

So installieren Sie PHP7.4 und Nginx auf Centos

Vorbereiten 1. Laden Sie das erforderliche Instal...

Der Unterschied zwischen VOLUME und docker -v in Dockerfile

Es gibt offensichtliche Unterschiede zwischen der...

Schreiben eines Schere-Stein-Papier-Spiels in JavaScript

In diesem Artikel finden Sie den spezifischen Cod...

CSS-Navigationsleistenmenü mit kleinem Dreieck-Implementierungscode

Viele Webseiten haben kleine Dreiecke in ihren Na...