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 表仅在浏览器中加载