انتقل إلى المحتوى

إلغاء ⁦DOM⁩

واجهات الإلغاء ⁦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معالج واحد لحدث الإلغاء.
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

هل كانت هذه الصفحة مفيدة؟