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