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 seine Priorität geändert wird.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Ereignisbehandlungs-Eigenschaft.
addEventListener("prioritychange", (event) => { })
onprioritychange = (event) => { }
Ereignistyp
Ein TaskPriorityChangeEvent
. Erbt von Event
.
Eigenschaften des Ereignisses
TaskPriorityChangeEvent.previousPriority
-
Gibt die vorherige Priorität des Tasks an (bevor sie geändert wurde). Die neue/aktualisierte Priorität wird aus
event.target.priority
(TaskSignal.priority
) gelesen.
Beispiele
Das untenstehende Beispiel zeigt, wie man auf das prioritychange
-Ereignis bei einem TaskSignal
hört.
Zuerst erstellen wir einen Controller und fügen einen Ereignislistener zu seinem Signal hinzu.
Beim Handling des Ereignisses nutzen wir previousPriority
beim Ereignis, um die ursprüngliche Priorität zu erhalten und TaskSignal.priority
beim Ereignisziel, um die neue/aktuelle Priorität zu erhalten.
Der Task wird dann gepostet, das Signal wird übergeben, und die Priorität wird sofort geändert.
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 Protokollfunktion myLog()
, um in das Textfeld unten zu protokollieren.
Dies ist verborgen, da es für das Beispiel nicht relevant ist.
Die unten stehende Ausgabe demonstriert, dass sich die Priorität des Tasks von user-blocking
auf background
ändert.
Dies geschieht, bevor der Task ausgeführt wird, könnte aber auch passieren, wenn der Task ausgeführt wird.
Spezifikationen
Specification |
---|
Prioritized Task Scheduling # ref-for-eventdef-tasksignal-prioritychange |
Prioritized Task Scheduling # dom-tasksignal-onprioritychange |