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 sich dessen Priorität ändert.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
, oder setzen Sie eine Ereignishandler-Eigenschaft.
addEventListener("prioritychange", (event) => { })
onprioritychange = (event) => { }
Ereignistyp
Ein TaskPriorityChangeEvent
. Erbt von Event
.
Ereigniseigenschaften
TaskPriorityChangeEvent.previousPriority
-
Gibt die vorherige Priorität der Aufgabe an (bevor sie geändert wurde). Die neue/aktualisierte Priorität wird aus
event.target.priority
(TaskSignal.priority
) gelesen.
Beispiele
Das folgende Beispiel zeigt, wie Sie auf das prioritychange
-Ereignis eines TaskSignal
hören können.
Zuerst erstellen wir einen Controller und fügen einen Ereignislistener zu seinem Signal hinzu.
Beim Umgang mit dem Ereignis 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, das Signal wird übergeben und dann ändern wir sofort die Priorität.
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 im unteren Textbereich protokolliert zu werden.
Dies ist verborgen, da es für das Beispiel nicht relevant ist.
Die folgende Ausgabe zeigt, dass sich die Aufgabenpriorität von user-blocking
zu background
geändert hat.
Dies geschieht, 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 |