Zum Inhalt springen

DOM Abort

Abbruch-APIs AbortController und AbortSignal.

Auf dieser Seite

AbortController und AbortSignal sind Globals, die von Fetch, Timern, Streams und Event-Listenern verwendet werden.

const controller = new AbortController();
controller.signal.aborted; // false

controller.abort();
controller.signal.aborted; // true
controller.signal.reason.name; // "AbortError"

AbortController

  • controller.signal liefert bei jedem Lesen dasselbe Signal.
  • abort(reason?) ist idempotent und löst abort einmal aus.
  • Ohne Grund speichert das Signal eine DOMException vom Typ AbortError.

AbortSignal

MitgliedZweck
abortedOb ein Abbruch erfolgt ist.
reasonDer übergebene Grund oder ein standardmäßiger AbortError.
throwIfAborted()Den Grund werfen, wenn abgebrochen.
onabortEinzelner Handler für das Abort-Ereignis.
AbortSignal.abort(reason?)Ein bereits abgebrochenes Signal erstellen.
AbortSignal.any(signals)Abbrechen, wenn eine beliebige Eingabe abbricht.
AbortSignal.timeout(ms)Später mit TimeoutError abbrechen.

AbortSignal kann nicht direkt konstruiert werden.

Event-Listener

const target = new EventTarget();
const controller = new AbortController();
let calls = 0;

const onMessage = () => {
  calls += 1;
};

target.addEventListener("message", onMessage, {
  signal: controller.signal,
});

target.dispatchEvent(new Event("message"));
controller.abort(); // removes the listener
target.dispatchEvent(new Event("message"));

console.log(calls); // 1

Ein bereits abgebrochenes Signal verhindert die Registrierung. Ein Wert in der Option signal, der kein AbortSignal ist, wird ignoriert.

Reference

Status: Full · Not measured · since 1.1.0

Exports

ExportKindStatusNotes
AbortControllerclassFullsignal, abort()
AbortSignalclassFullAbortSignal.abort(), AbortSignal.timeout(), AbortSignal.any(), aborted, reason, throwIfAborted(), onabort

War diese Seite hilfreich?