Theme
Primary Color

إلغاء انتظار غير متزامن بإستخدام AbortController

بعض APIs بتقبل signal علشان المستدعي يقدر يلغي العملية

تجهيز المثال

إستخدم Node.js 24 أو إصدار أحدث متوافق واحفظ الملفات داخل مجلد تدريب جديد وشغل node main.mjs

كود التطبيق

import { setTimeout as delay } from 'node:timers/promises';
const controller = new AbortController();
const waiting = delay(5000, 'Done', { signal: controller.signal });
controller.abort();
try {
  console.log(await waiting);
} catch (error) {
  if (error.name !== 'AbortError') throw error;
  console.log('Cancelled');
}

طريقة التجربة والنتيجة

الانتظار بيتلغى وبتظهر Cancelled بدل انتظار خمس ثواني

ملحوظة

دعم الإلغاء لازم يكون موجود في API نفسها وتمرير signal لوحده مش بيوقف أي دالة عادية

nodejs شرح