الدرس 8 من 8

ذاكرة مؤقّتة للطلبات

هدف الدرس

طلب واحد لكل معرّف

01

الشرح

إذا كانت في الصفحة خمسة مكوّنات تطلب بيانات المستخدم نفسه، ذهبت إلى الخادم خمسة طلبات متطابقة، وذاكرة مؤقّتة بسيطة (cache) تجعلها طلبًا واحدًا، وهي Map تربط كل معرّف بطلبه.

والفخّ في ما تحفظه، فإن حفظت النتيجة بعد await وجدت كل الاستدعاءات التي تأتي في اللحظة نفسها الذاكرةَ فارغة، فترسل كلّها طلباتها معًا. لذلك احفظ الوعد نفسه لحظة إرسال الطلب، فيشترك كل من يسأل بعدها في الطلب الجاري حتى لو لم ينتهِ بعد.

ولحفظ الوعد ثمن، لأن الوعد المرفوض يبقى مرفوضًا، فإذا فشل الطلب فاحذفه من الذاكرة، وإلا بقي المستخدم عالقًا على الخطأ حتى يعيد تحميل الصفحة.

02

المطلوب

اجعل getUser(id) تطلب كل معرّف من الشبكة مرّة واحدة فقط، حتى لو استُدعيت له عدّة مرّات في اللحظة نفسها، واحذفه من الذاكرة إذا فشل طلبه.

الفحوص

5 فحوص
  1. الدالة getUser تُرجع المستخدم المطلوب
  2. الاستدعاء المكرّر يأخذ نتيجته من الذاكرة
  3. الاستدعاءات في اللحظة نفسها تشترك في طلب واحد
  4. كل معرّف له طلبه ونتيجته
  5. الطلب الفاشل لا يبقى في الذاكرة
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

تتعلّم هنا قراءة JSON وانتظار ردّ الخادم والتعامل مع حالات التحميل والفشل، وهذا ما يفرّق بين نموذج تجريبي ومنتج يعتمد عليه الناس.

مستواه متوسّط، وفيه 8 دروس مجموع مدّتها ساعتان.

index.html
المعاينة
index.html100%
–/5

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 5 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

تتعلّم هنا قراءة JSON وانتظار ردّ الخادم والتعامل مع حالات التحميل والفشل، وهذا ما يفرّق بين نموذج تجريبي ومنتج يعتمد عليه الناس.

مستواه متوسّط، وفيه 8 دروس مجموع مدّتها ساعتان.