الدرس 5 من 8
طلبات متوازية
- 13 دقيقة
- 4 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
زمن أطولها لا مجموعها
الشرح
ثلاثة طلبات لا يحتاج أحدها نتيجة الآخر، ومع ذلك يكتبها أكثرنا await بعد await. كل سطر ينتظر ما قبله، فيصير الزمن مجموع الطلبات بدل أطولها. وأشهر أشكال المشكلة await داخل حلقة for.
Promise.all يُطلق الطلبات كلها معًا وينتظرها مرّة واحدة، ويُرجع النتائج بترتيب الطلب لا بترتيب الوصول.
وانتبه: Promise.all يُرفض كلّه إن فشل طلب واحد، فإن كانت النتائج الجزئية مقبولة فاستعمل Promise.allSettled. والطلب الذي يحتاج نتيجة غيره يبقى بعده بـ await؛ التوازي للمستقلّ وحده.
المطلوب
أعد كتابة loadAll(names) لتُطلق كل الطلبات معًا وتُرجع نتائجها بترتيب names. اضغط الزرّ قبل التعديل وبعده وقارن الزمن.
معايير التصحيح
4 معايير- النتائج كاملة وبترتيب الطلب
- الطلبات تنطلق كلها فورًا لا واحدًا بعد واحد
- الزمن زمن أبطأ طلب لا مجموع الطلبات
- تعمل مع أيّ قائمة وبأيّ ترتيب