الدرس 5 من 8

طلبات متوازية

هدف الدرس

زمن أبطأ طلب لا مجموع الأزمنة

01

الشرح

عندك ثلاثة طلبات لا يحتاج أيّ منها نتيجة الآخر، ومع ذلك يكتبها أكثرنا بـ await بعد await، فينتظر كل سطر الذي قبله، ويصير الزمن الكلّي مجموع أزمنة الطلبات بدل زمن أطولها. وأشهر صورة لهذه المشكلة أن تضع await داخل حلقة for.

أمّا Promise.all فيُطلق الطلبات كلّها معًا وينتظرها مرّة واحدة، ثم يُرجع النتائج بترتيب الطلبات لا بترتيب وصولها.

وانتبه إلى أن Promise.all يفشل كلّه إذا فشل طلب واحد، فإن كان يكفيك جزء من النتائج فاستعمل Promise.allSettled. أمّا الطلب الذي يحتاج نتيجة طلب آخر فيبقى بعده بـ await، لأن التوازي يصلح للطلبات المستقلّة وحدها.

02

المطلوب

أعد كتابة loadAll(names) لتُطلق الطلبات كلّها معًا وتُرجع نتائجها بترتيب names، واضغط الزرّ قبل التعديل وبعده لتقارن الزمن.

الفحوص

4 فحوص
  1. النتائج كاملة وبترتيب الطلب
  2. الطلبات تنطلق كلّها فورًا لا واحدًا بعد الآخر
  3. الزمن هو زمن أبطأ طلب لا مجموع الطلبات
  4. تعمل مع أيّ قائمة وبأيّ ترتيب
03

تلميحات

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

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

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

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

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

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

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

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

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