Spec-Zone.ru › Web APIs

TaskSignal: событие prioritychange

Ограниченная доступность

Эта функция не является Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Данная функция доступна в Web Workers.

Событие prioritychange отправляется в TaskSignal, если его приоритет изменяется.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.

addEventListener("prioritychange", (event) => {});

onprioritychange = (event) => {};

Тип события

A TaskPriorityChangeEvent. Наследуется от Event.

Событие TaskPriorityChangeEvent

Свойства события

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API