الدرس 7 من 8
أخطاء الوعود
- 13 دقيقة
- 4 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
ما لا تنتظره لا تلتقطه
الشرح
try/catch يلتقط ما يُرمى داخل كتلته فقط. والوعد الذي لا تنتظره يُرفض لاحقًا، بعد أن خرج التنفيذ من الكتلة، فلا يراه catch أبدًا. والنتيجة صفحة تقول «تم الحفظ» والحفظ فشل.
الإصلاح كلمة واحدة: await داخل try. حينها يصير الرفض خطأً عاديًّا يُرمى من السطر نفسه ويصل إلى catch.
وأحيانًا لا تريد الانتظار عمدًا، كتسجيل إحصاء لا يستحق أن يؤخّر المستخدم. لكن الرفض بلا معالجة لا يختفي: يصير «رفضًا غير معالَج» في الطرفية ويضيع سببه. فكل وعد لا تنتظره يحتاج .catch خاصًّا به.
المطلوب
أصلح save() لتُظهر في #msg سبب الفشل الحقيقي ولا تعلن النجاح قبل وقوعه، وعالج رفض track بلا أن تنتظره.
معايير التصحيح
4 معايير- فشل الحفظ لا يُعلَن نجاحًا
- رسالة الفشل تذكر سببه الحقيقي
- النجاح لا يُعلَن قبل أن يتمّ
- لا رفض يضيع بلا معالجة