AbortController and AbortSignal are globals used by Fetch, timers,
streams, and event listeners.
const controller = new AbortController();
controller.signal.aborted; // false
controller.abort();
controller.signal.aborted; // true
controller.signal.reason.name; // "AbortError"AbortController
controller.signalreturns the same signal on every read.abort(reason?)is idempotent and dispatchesabortonce.- Without a reason, the signal stores an
AbortErrorDOMException.
AbortSignal
| Member | Purpose |
|---|---|
aborted | Whether cancellation occurred. |
reason | The supplied reason or a default AbortError. |
throwIfAborted() | Throw the reason when aborted. |
onabort | Single abort-event handler. |
AbortSignal.abort(reason?) | Create an already-aborted signal. |
AbortSignal.any(signals) | Abort when any input aborts. |
AbortSignal.timeout(ms) | Abort later with TimeoutError. |
AbortSignal is not directly constructible.
Event listeners
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); // 1An already-aborted signal prevents registration. A non-AbortSignal value in
the signal option is ignored.