WorkerGlobalScope: queueMicrotask()-Methode

Hinweis: Dieses Feature ist nur verfügbar in Web Workers.

Die queueMicrotask()-Methode des WorkerGlobalScope-Interfaces reiht eine Mikrotask ein, die zu einem sicheren Zeitpunkt vor der Rückkehr der Kontrolle zur Ereignisschleife des Browsers ausgeführt wird.

Die Mikrotask ist eine kurze Funktion, die nach Abschluss der aktuellen Task ausgeführt wird und wenn kein anderer Code darauf wartet, ausgeführt zu werden, bevor die Kontrolle des Ausführungskontextes an die Ereignisschleife des Browsers zurückgegeben wird.

Dies ermöglicht es Ihrem Code, ohne Beeinträchtigung durch anderen, möglicherweise höher priorisierten, anstehenden Code zu laufen, jedoch bevor der Browser die Kontrolle über den Ausführungskontext zurückerlangt, möglicherweise abhängig von der Arbeit, die Sie abschließen müssen. Sie können mehr über die Verwendung von Mikrotasks und warum Sie sich dafür entscheiden könnten, in unserem Mikrotask-Leitfaden erfahren.

Die Bedeutung von Mikrotasks liegt in ihrer Fähigkeit, Aufgaben asynchron, aber in einer bestimmten Reihenfolge auszuführen. Weitere Einzelheiten finden Sie unter Verwendung von Mikrotasks in JavaScript mit queueMicrotask().

Mikrotasks sind besonders nützlich für Bibliotheken und Frameworks, die letzten Bereinigungen oder andere Aufgaben unmittelbar vor der Darstellung ausführen müssen.

Syntax

js
queueMicrotask(callback)

Parameter

callback

Eine function, die ausgeführt werden soll, wenn die Browser-Engine entscheidet, dass es sicher ist, Ihren Code auszuführen. Eingereihte Mikrotasks werden ausgeführt, nachdem alle anstehenden Aufgaben abgeschlossen sind, jedoch bevor die Kontrolle an die Ereignisschleife des Browsers übergeben wird.

Rückgabewert

Keine (undefined).

Beispiele

js
queueMicrotask(() => {
  // function contents here
});

Aus der queueMicrotask-Spezifikation entnommen:

js
MyElement.prototype.loadData = function (url) {
  if (this._cache[url]) {
    queueMicrotask(() => {
      this._setData(this._cache[url]);
      this.dispatchEvent(new Event("load"));
    });
  } else {
    fetch(url)
      .then((res) => res.arrayBuffer())
      .then((data) => {
        this._cache[url] = data;
        this._setData(data);
        this.dispatchEvent(new Event("load"));
      });
  }
};

Spezifikationen

Specification
HTML Standard
# microtask-queuing

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch