TaskController: setPriority() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

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

TaskController 介面的 setPriority() 方法可以被呼叫來為該控制器的 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

瀏覽器相容性