AbortController і AbortSignal — глобальні об’єкти, які використовують Fetch,
таймери, потоки та слухачі подій.
const controller = new AbortController();
controller.signal.aborted; // false
controller.abort();
controller.signal.aborted; // true
controller.signal.reason.name; // "AbortError"AbortController
controller.signalпід час кожного читання повертає той самий сигнал.abort(reason?)ідемпотентний і надсилаєabortодин раз.- Без причини сигнал зберігає
DOMExceptionAbortError.
AbortSignal
| Член | Призначення |
|---|---|
aborted | Чи відбулося скасування. |
reason | Передана причина або AbortError за замовчуванням. |
throwIfAborted() | Кинути причину, якщо скасовано. |
onabort | Єдиний обробник події abort. |
AbortSignal. | Створити вже скасований сигнал. |
AbortSignal. | Скасувати, коли скасовано будь-який із вхідних сигналів. |
AbortSignal.timeout(ms) | Скасувати пізніше з TimeoutError. |
AbortSignal не можна створити безпосередньо через конструктор.
Слухачі подій
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Уже скасований сигнал запобігає реєстрації. Значення, що не є AbortSignal, у
параметрі signal ігнорується.
Reference
Status: Full · Not measured · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
AbortController | class | Full | signal, abort() |
AbortSignal | class | Full | AbortSignal.abort(), AbortSignal.timeout(), AbortSignal.any(), aborted, reason, throwIfAborted(), onabort |