Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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.

js
addEventListener("prioritychange", (event) => { })

onprioritychange = (event) => { }

Ereignistyp

Ein TaskPriorityChangeEvent. Erbt von Event.

Event TaskPriorityChangeEvent

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.

js
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

Browser-Kompatibilität