queueMicrotask() 全局函数

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

queueMicrotask() 方法在 WindowWorker 接口上公开,它将一个微任务排队,以便在控制权返回到浏览器的事件循环之前安全地执行。

微任务是一个简短的函数,它将在当前任务完成其工作后运行,并且在浏览器事件循环恢复执行上下文控制权之前没有其他代码等待运行。

这可以让您的代码在不干扰任何其他可能优先级更高的待处理代码的情况下运行,但在浏览器重新获得执行上下文控制权之前运行,可能依赖于您需要完成的工作。您可以在我们的 微任务指南 中了解更多关于如何使用微任务以及为什么要选择使用微任务的信息。

微任务的重要性在于它能够异步地以特定顺序执行任务。有关更多详细信息,请参见 使用 queueMicrotask() 在 JavaScript 中使用微任务

微任务对于需要执行最终清理或其他渲染前任务的库和框架特别有用。

语法

js
queueMicrotask(() => {/* ... */})

参数

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 标准
# microtask-queuing

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅