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
# 微任务队列

浏览器兼容性

另见