TaskSignal: prioritychange-Ereignis
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
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 addEventListener():
addEventListener("prioritychange", (event) => { })
Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onprioritychange = (event) => { }
Ereignistyp
Ein TaskPriorityChangeEvent. Erbt von Event.
Beispiele
Das folgende Beispiel zeigt, wie Sie auf das prioritychange-Ereignis eines TaskSignal reagieren.
Zunächst erstellen wir einen Controller und fügen seinem Signal einen Event-Listener hinzu.
Bei der Verarbeitung des Ereignisses verwenden wir previousPriority am Ereignis, um die ursprüngliche Priorität zu ermitteln, und TaskSignal.priority am Ereignisziel, um die neue bzw. aktuelle Priorität zu ermitteln.
Anschließend wird die Aufgabe unter Übergabe des Signals eingeplant, und unmittelbar danach ändern wir 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 die benutzerdefinierte Logging-Funktion myLog(), um Meldungen im Textbereich unten auszugeben.
Sie wird hier nicht gezeigt, da sie für das Beispiel nicht relevant ist.
Die folgende Ausgabe zeigt, dass sich die Priorität der Aufgabe von user-blocking zu background geändert hat.
Dies geschieht, bevor die Aufgabe ausgeführt wird, könnte aber auch während ihrer Ausführung geschehen.
Spezifikationen
| Spezifikation |
|---|
| Prioritized Task Scheduling> # eventdef-tasksignal-prioritychange> |
| Prioritized Task Scheduling> # dom-tasksignal-onprioritychange> |