Promise.all / any / race / allSettled — اختيار الأداة المناسبة
تدرّبوا على مجمّعات Promise: all وany وrace وallSettled. وتعلّموا سلوك النجاح والفشل ومتى تستخدمون كل واحدة
Promise.all / any / race / allSettled — اختيار الأداة المناسبة درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
نظرة عامة على دوال التجميع
الهدف: تعلّموا أربع دوال مساعدة وسلوك كل منها.
- all: الانتظار حتى تكتمل جميعها؛ والفشل سريعًا
- any: أول نجاح
- race: أول Promise تُحسم، سواء بالنجاح أو الخطأ
- allSettled: نتائج الجميع

أساسيات Promise.all
تحل Promise.all بمصفوفة من النتائج؛ ويؤدي رفض واحد إلى رفض العملية بأكملها.
// Small helpers for examples
function delay(ms, value, shouldFail = false) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
if (shouldFail) reject(new Error(String(value)));
else resolve(value);
}, ms);
});
}
// Promise.all waits for all; rejects fast on first error
Promise.all([
delay(10, "A"),
delay(5, "B")
]).then(function (vals) {
console.log("all:", vals);
});

أساسيات Promise.any
تحل Promise.any عند أول نجاح؛ ولا تُرفض إلا إذا رُفضت جميع المدخلات.
// Promise.any gives the first fulfilled value
Promise.any([
delay(8, "ok-1"),
delay(3, "ok-2"),
delay(6, "ok-3")
]).then(function (v) {
console.log("any:", v);
}).catch(function (e) {
console.log("any failed:", e.message);
});

أساسيات Promise.race
تختار Promise.race أيّ العناصر تُحسم أولًا، سواء كان ذلك بحلّها أو برفضها.
// Promise.race settles with the first to finish (success or error)
Promise.race([
delay(5, "win"),
delay(7, "boom", true)
]).then(function (v) {
console.log("race resolved:", v);
}).catch(function (e) {
console.log("race rejected:", e.message);
});

أساسيات Promise.allSettled
تحل Promise.allSettled دائمًا بمصفوفة من كائنات الحالة لكل إدخال.
// Promise.allSettled waits for all and reports each outcome
Promise.allSettled([
delay(4, "A"),
delay(6, "X", true)
]).then(function (results) {
console.log("allSettled:", results.map(function (r) { return r.status; }));
});

أيّها تختار؟
الاختيار:
- all: عند الحاجة إلى جميع النتائج؛ ويفشل سريعًا عند حدوث أي خطأ.
- any: لقبول أول نجاح، كما في مصادر البيانات البديلة.
- race: لاختيار أول ما يكتمل، كما في أنماط المهلة الزمنية.
- allSettled: لجمع كل نتيجة وفحصها.

اختبار اختيار دالة التجميع
تحقق سريع: أول نتيجة fulfilled.

مراجعة
مراجعة: استخدموا all عند «الحاجة إلى الجميع»، وany عند «أول نجاح»، وrace عند «أول ما يُحسم»، وallSettled لفحص كل نتيجة دون التوقف عند أول نتيجة.

تعلم JavaScript مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 59
- الدروس
- 200
الأسئلة الشائعة
هل درس «Promise.all / any / race / allSettled — اختيار الأداة المناسبة» مجاني؟
نعم — نص درس «Promise.all / any / race / allSettled — اختيار الأداة المناسبة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.
ماذا ستتعلم في «Promise.all / any / race / allSettled — اختيار الأداة المناسبة»؟
تدرّبوا على مجمّعات Promise: all وany وrace وallSettled. وتعلّموا سلوك النجاح والفشل ومتى تستخدمون كل واحدة تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟
لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «Promise.all / any / race / allSettled — اختيار الأداة المناسبة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟
نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حلقة الأحداث وأساسيات Task مقابل Microtask
- Promises — الحالات والسلاسل ومعالجة الأخطاء
- Promise.all / any / race / allSettled — اختيار الأداة المناسبة