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 |
瀏覽器相容性
載入中…