TaskController:setPriority() 方法

有限可用性

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

setPriority()方法的TaskController接口可以被调用来设置一个新的优先级对于这个控制器的signal。如果一个优先级任务是配置以使用信号,这也将更改任务优先级。

观察者通过调度一个prioritychange事件。该方法仅在优先级实际更改时才会发出通知(如果优先级不会因调用而更改,则不会触发该事件)。

请注意,任务优先级只能更改为具有可变优先级的任务。如果任务是不可变的,则函数调用会被忽略。

语法

js
setPriority(priority)

参数

优先级

优先级的任务。其中之一:"user-blocking""user-visible""background".

返回值

无 (undefined).

异常

NotAllowedError DOMException

当一个优先级更改正在运行时,已开始进行优先级更改。

示例

首先,我们创建一个任务控制器。在这种情况下,我们没有指定优先级,因此它将默认为user-visible

js
// Create a TaskController with default priority: 'user-visible'
const controller = new TaskController();

然后,我们将控制器的信号传递给Scheduler.postTask()方法。

js
// Post task passing the controller's signal.
// The signal priority sets the initial priority of the task
scheduler
  .postTask(() => "Task execute", { signal: controller.signal })
  .then((taskResult) => {
    console.log(`${taskResult}`);
  }) // Run on success)
  .catch((error) => {
    console.log(`Catch error: ${error}`);
  }); // Run on fail

然后可以使用控制器更改优先级

js
// Change the priority to 'background' using the controller
controller.setPriority("background");

其他示例,包括显示如何处理更改优先级所产生的事件,可以在以下位置找到:优先级任务调度 API > 示例.

规范

规范
优先级任务调度
# dom-taskcontroller-setpriority

浏览器兼容性

BCD 表仅在浏览器中加载