WorkerGlobalScope:queueMicrotask() 方法

Baseline 已廣泛支援

此特性已經十分成熟,可在許多裝置和瀏覽器版本上使用。自 2020 年 7 月以來,它已在各大瀏覽器中可用。

注意:此功能僅在 Web Workers 中可用。

queueMicrotask() 方法屬於 WorkerGlobalScope 介面,它將一個微任務加入佇列,以便在控制權安全地返回到瀏覽器的事件迴圈之前執行。

微任務是一個簡短的函式,它將在當前任務完成其工作後執行,並且在控制權返回到瀏覽器的事件迴圈之前,沒有其他程式碼在等待執行。

這使得您的程式碼可以執行,而不會干擾任何其他可能具有更高優先順序的待執行程式碼,但會在瀏覽器重新獲得執行上下文的控制權之前執行,這可能取決於您需要完成的工作。您可以在我們的微任務指南中瞭解更多關於如何使用微任務以及為什麼選擇使用它的資訊。

微任務的重要性在於它能夠以特定的順序非同步執行任務。有關更多詳細資訊,請參閱使用 JavaScript 和 queueMicrotask() 中的微任務

微任務對於需要執行最終清理或其他渲染前任務的庫和框架尤其有用。

語法

js
queueMicrotask(callback)

引數

回撥

當瀏覽器引擎確定呼叫您的程式碼是安全的時要執行的 函式。已入隊的微任務將在所有待處理的任務完成後執行,但在將控制權移交給瀏覽器的事件迴圈之前。

返回值

無(undefined)。

示例

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

摘自 queueMicrotask 規範

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"));
      });
  }
};

規範

規範
HTML
# microtask-queuing

瀏覽器相容性

另見