TaskSignal: событие prioritychange
Ограниченная доступность
Эта функция не является Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Примечание: Данная функция доступна в Web Workers.
Событие prioritychange отправляется в TaskSignal, если его приоритет изменяется.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("prioritychange", (event) => {});
onprioritychange = (event) => {};
Тип события
A TaskPriorityChangeEvent. Наследуется от Event.
Свойства события
TaskPriorityChangeEvent.previousPriority-
Указывает предыдущий приоритет задачи (до изменения). Новый/изменённый приоритет считывается из
event.target.priority(TaskSignal.priority).
Примеры
В примере ниже показано, как прослушивать событие prioritychange на TaskSignal.
Сначала мы создаём контроллер и добавляем обработчик событий к его сигналу. При обработке события мы используем previousPriority для получения исходного приоритета и TaskSignal.priority для получения нового/текущего приоритета.
Затем задача публикуется, передавая в неё сигнал, а затем мы немедленно изменяем приоритет.
if ("scheduler" in this) {
// Declare a TaskController, setting its signal priority to 'user-blocking'
const controller = new TaskController({ priority: "user-blocking" });
// Listen for 'prioritychange' events on the controller's signal.
controller.signal.addEventListener("prioritychange", (event) => {
const previousPriority = event.previousPriority;
const newPriority = event.target.priority;
myLog(`Priority changed from ${previousPriority} to ${newPriority}.`);
});
// Post task using the controller's signal.
// The signal priority sets the initial priority of the task
scheduler.postTask(
() => {
myLog("Task 1");
},
{ signal: controller.signal },
);
// Change the priority to 'background' using the controller
controller.setPriority("background");
}
Примечание: В коде выше используется пользовательская функция логирования myLog() для записи в текстовую область ниже. Она скрыта, так как не относится к примеру.
Вывод ниже демонстрирует, что приоритет задачи изменился с user-blocking на background. Это происходит до выполнения задачи, но также может произойти во время выполнения задачи.
Спецификации
| Спецификация |
|---|
| Планирование задач с приоритетами # ref-for-eventdef-tasksignal-prioritychange |
| Планирование задач с приоритетами # dom-tasksignal-onprioritychange |
Совместимость с браузерами
| Десктоп | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
prioritychange_event |
94 | 94 | 101 | 80 | Нет | 94 | Нет | 66 | Нет | 17.0 | 94 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/TaskSignal/prioritychange_event