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

Throttling Rapid Search Queries تهدئة طلبات البحث المتلاحقة

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

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

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

تُطلق حقول البحث الفوري حدث التغيير مع كل حرف يكتبه المستخدم. يتيح دمج مؤقت انتظار قصير عبر setTimeout() (مثل 250ms) مع AbortController داخل دالة تنظيف واحدة تجربة بحث فائقة السلاسة دون إغراق الخادم بطلبات غير مكتملة:

  • إذا كتب المستخدم حرفاً تالياً قبل مرور 250ms، تلغي clearTimeout(timerId) الطلب المجدول قبل انطلاقه أصلاً.
  • وإذا كان هناك طلب سابق قد انطلق بالفعل، تتكفل controller.abort() بإلغائه فوراً.
الصف 2 كود برمجي
HTML
useEffect(() => {
  const ctrl = new AbortController();
  const id = setTimeout(() => {
    const opts = { signal: ctrl.signal };
    fetch(`/api/courses?q=${q}`, opts)
      .then((r) => r.json())
      .then(setResults)
      .catch(() => {});
  }, 250);
  return () => { clearTimeout(id); ctrl.abort(); };
}, [q]);
الصف 3 ملاحظة هامة