Перейти до вмісту

DOM Abort

API скасування AbortController і AbortSignal.

На цій сторінці

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 один раз.
  • Без причини сигнал зберігає DOMException AbortError.

AbortSignal

ЧленПризначення
abortedЧи відбулося скасування.
reasonПередана причина або AbortError за замовчуванням.
throwIfAborted()Кинути причину, якщо скасовано.
onabortЄдиний обробник події abort.
AbortSignal.abort(reason?)Створити вже скасований сигнал.
AbortSignal.any(signals)Скасувати, коли скасовано будь-який із вхідних сигналів.
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

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

Чи була ця сторінка корисною?