TaskSignal: prioritychange Ereignis
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
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.
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 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.
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
BCD tables only load in the browser