TaskController: setPriority() 方法
注意:此功能在 Web Workers 中可用。
TaskController 接口的 setPriority() 方法可以被调用来为该控制器的 signal 设置一个新的 优先级。如果一个优先级任务被 配置 为使用该信号,那么任务的优先级也会随之改变。
观察者可以通过派发一个 prioritychange 事件来得知优先级的变化。只有当优先级实际发生改变时,该方法才会通知(如果调用不会改变优先级,则不触发事件)。
请注意,任务优先级只能为 具有可变优先级的任务 更改。如果任务是不可变的,则该函数调用将被忽略。
语法
js
setPriority(priority)
参数
优先级-
任务的 优先级。可选值之一:
"user-blocking"、"user-visible"、"background"。
返回值
无(undefined)。
异常
NotAllowedErrorDOMException-
当已经有一个优先级更改正在运行时,开始一个新的优先级更改。
示例
首先,我们创建一个任务控制器。在这种情况下,我们没有指定优先级,因此它将默认为 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 |
浏览器兼容性
加载中…