Aller au contenu

DOM Abort

API d'annulation AbortController et AbortSignal.

Sur cette page

AbortController et AbortSignal sont des globales utilisées par Fetch, les minuteries, les flux et les écouteurs d’événements.

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

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

AbortController

  • controller.signal renvoie le même signal à chaque lecture.
  • abort(reason?) est idempotent et distribue abort une seule fois.
  • Sans raison, le signal stocke une DOMException AbortError.

AbortSignal

MembreRôle
abortedIndique si l’annulation a eu lieu.
reasonLa raison fournie ou une AbortError par défaut.
throwIfAborted()Lever la raison si le signal est interrompu.
onabortGestionnaire unique de l’événement abort.
AbortSignal.abort(reason?)Créer un signal déjà interrompu.
AbortSignal.any(signals)S’interrompre dès que l’une des entrées s’interrompt.
AbortSignal.timeout(ms)S’interrompre plus tard avec une TimeoutError.

AbortSignal ne peut pas être construit directement.

Écouteurs d’événements

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

Un signal déjà interrompu empêche l’enregistrement. Une valeur qui n’est pas un AbortSignal dans l’option signal est ignorée.

Reference

Status: Full · Not measured · since 1.1.0

Exports

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

Cette page vous a-t-elle aidé ?