TaskSignal: prioritychange Ereignis

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das prioritychange Ereignis wird an ein TaskSignal gesendet, wenn dessen Priorität geändert wird.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.

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

onprioritychange = (event) => {};

Ereignistyp

Ereigniseigenschaften

TaskPriorityChangeEvent.previousPriority

Gibt die vorherige Priorität der Aufgabe an (bevor sie geändert wurde). Die neue/aktualisierte Priorität wird von event.target.priority (TaskSignal.priority) ausgelesen.

Beispiele

Das folgende Beispiel zeigt, wie man auf das prioritychange Ereignis an einem TaskSignal hört.

Zuerst erstellen wir einen Controller und fügen seinem Signal einen Ereignislistener hinzu. Bei der Behandlung des Ereignisses verwenden wir previousPriority, um die ursprüngliche Priorität zu erhalten, und TaskSignal.priority am Ereignisziel, um die neue/aktuelle Priorität zu erhalten.

Die Aufgabe wird dann gepostet, indem das Signal übergeben wird, und dann ändern wir sofort die Priorität.

js
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");
}

Hinweis: Der obige Code verwendet eine benutzerdefinierte Protokollierungsfunktion myLog(), um in das untenstehende Textfeld zu protokollieren. Dies ist ausgeblendet, da es für das Beispiel nicht relevant ist.

Die untenstehende Ausgabe zeigt, dass sich die Priorität der Aufgabe von user-blocking zu background geändert hat. Dies passiert, bevor die Aufgabe ausgeführt wird, könnte aber auch passieren, während die Aufgabe läuft.

Spezifikationen

Specification
Prioritized Task Scheduling
# ref-for-eventdef-tasksignal-prioritychange
Prioritized Task Scheduling
# dom-tasksignal-onprioritychange

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
prioritychange event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
User must explicitly enable this feature.