TaskSignal: prioritychange Event
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 Methoden wie addEventListener() oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("prioritychange", (event) => { })
onprioritychange = (event) => { }
Ereignistyp
Ein TaskPriorityChangeEvent. Erbt von Event.
Beispiele
Das folgende Beispiel zeigt, wie Sie das prioritychange-Ereignis auf einem TaskSignal abhören können.
Zuerst erstellen wir einen Controller und fügen einen Ereignislistener zu dessen Signal hinzu.
Beim Umgang mit dem Ereignis verwenden wir previousPriority am Ereignis, um die ursprüngliche Priorität zu erhalten, und TaskSignal.priority am Ereignisziel, um die neue/aktuelle Priorität zu bekommen.
Der Task wird dann gepostet und das Signal übergeben. Danach ändern wir umgehend 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.
Diese ist verborgen, da sie für das Beispiel nicht relevant ist.
Die untenstehende Ausgabe zeigt, dass sich die Priorität des Tasks von user-blocking zu background geändert hat.
Dies geschieht, bevor der Task ausgeführt wird, könnte aber auch während der Ausführung des Tasks passieren.
Spezifikationen
| Spezifikation |
|---|
| Prioritized Task Scheduling> # eventdef-tasksignal-prioritychange> |
| Prioritized Task Scheduling> # dom-tasksignal-onprioritychange> |