Scheduler

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

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

Scheduler 接口属于优先级任务调度 API,它提供了调度优先级任务的方法。

可以通过全局对象中的 Window.scheduler 或 worker 中的 WorkerGlobalScope.scheduler 来访问 Scheduler

实例属性

无。

实例方法

Scheduler.postTask()

以回调函数的形式将任务添加到调度器中,可选择指定优先级、延迟时间,以及用于中止任务的信号。

Scheduler.yield()

将主线程的控制权交还给浏览器,并返回一个 promise,该 promise 在恢复执行时会 resolve。

示例

如果该功能已定义,则在 worker 和主线程中,globalThis 属性都会返回此对象的一个实例。

下面的代码展示了一个简单的任务,它会 resolve 文本“Task executing”。成功时会记录此文本。代码还展示了一个 catch 块,对于更复杂的代码来说,需要它来处理任务被中止或抛出错误的情况。

js
if ("scheduler" in this) {
  // Post task with default priority: 'user-visible' (no other options)
  // When the task resolves, Promise.then() logs the result.
  scheduler
    .postTask(() => "Task executing")
    .then((taskResult) => console.log(`${taskResult}`)) // Log result
    .catch((error) => console.error(`Error: ${error}`)); // Log errors
}

有关更全面的示例代码,请参阅优先级任务调度 API > 示例

规范

规范
优先任务调度
# scheduler

浏览器兼容性