انتقل إلى محتوى الدرس

Canceling fetch AbortController إلغاء الطلب عبر AbortController

احمِ واجهة React من تضارب ردود الشبكة المتأخرة باستخدام راية التجاهل في دالة التنظيف وأداة AbortController القياسية وفصل خطأ الإلغاء المقصود وتهدئة البحث.
4 صفوف تعليمية
ReactJS
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تحمي راية ignore حالة المكون من التلوث، لكن المتصفح يظل مستمراً في تنزيل بقية حزمة الشبكة المهملة في الخلفية. لإلغاء اتصال الشبكة الفعلي ذاته، أنشئ كائن new AbortController() القياسي داخل useEffect()، ومرّر الإشارة { signal: controller.signal } ضمن خيارات fetch()، ثم استدعِ controller.abort() داخل دالة التنظيف.

يوفر الإلغاء الفعلي للطلبات الملغاة استهلاك البيانات ويحرر قنوات الاتصال في المتصفح فوراً، وهو أمر بالغ الأهمية في القوائم الكبيرة والبحث الفوري.

الصف 2 صورة توضيحية
مخطط يقارن بين مشكلة طمس الرد البطيء للبيانات الحديثة وبين الحماية القياسية بإلغاء الطلب عبر AbortController
الصف 3 كود برمجي
HTML
useEffect(() => {
  const controller = new AbortController();
  fetch(url, { signal: controller.signal })
    .then((r) => r.json())
    .then(setCourses)
    .catch((e) => {
      if (e.name !== 'AbortError') setStatus('error');
    });
  return () => controller.abort();
}, [url]);
الصف 4 ملاحظة هامة