Window: queueMicrotask() 方法

Baseline 已廣泛支援

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

Window 介面的 queueMicrotask() 方法將一個微任務排入佇列,在控制權返回瀏覽器事件迴圈之前,在一個安全的時間執行。

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

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

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

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

語法

js
queueMicrotask(callback)

引數

回撥

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

返回值

無(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
# 微任務佇列

瀏覽器相容性

另見