الدرس 4 من 8
إعادة المحاولة
- 14 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
لا تستسلم من أول فشل
الشرح
كثير من أخطاء الشبكة مؤقّت، كانقطاع لحظي في الاتصال أو خادم مشغول، ويكفي أن تعيد المحاولة مرّتين لينجح أغلب الطلبات دون أن يلاحظ المستخدم شيئًا.
وتكفي لذلك حلقة بسيطة: حاول، فإن فشلت وما زالت لديك محاولات فانتظر قليلًا ثم أعد المحاولة، وإن نفدت المحاولات كلّها فارمِ الخطأ الأخير ولا تتجاهله بصمت.
واجعل الانتظار بين المحاولات يطول في كل مرّة (backoff)، لأن تكرار الطلبات بسرعة على خادم مُثقَل يزيد الضغط عليه.
المطلوب
اكتب الدالة withRetry(fn, times) التي تعيد المحاولة حتى تنجح أو ينفد عدد المحاولات، واعرض عدد المحاولات.
الفحوص
5 فحوص- الدالة withRetry معرَّفة
- تنجح رغم فشل أول محاولتين
- عدد المحاولات ثلاث
- نفاد المحاولات يرمي الخطأ ولا يتجاهله
- تُرجع قيمة الدالة عند نجاحها من أول مرّة