0Pricing
JavaScript Academy · درس

Promises — الحالات والسلاسل ومعالجة الأخطاء

أنشئوا Promises واستخدموها: الحالات (pending/fulfilled/rejected)، وربط العمليات باستخدام then، ومعالجة الأخطاء باستخدام catch/finally

Promises — الحالات والسلاسل ومعالجة الأخطاء درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.

مقدمة إلى Promise

الهدف: تعلّم أنماط Promise البسيطة.

  • الحالات: pending ← fulfilled/rejected
  • تسلسل then
  • التقاط الأخطاء باستخدام catch
  • التنظيف باستخدام finally
Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 1

حل Promise

تبدأ Promise بالحالة pending وتصبح fulfilled عند استدعاء resolve.

// Create a Promise and resolve it
function waitMs(ms) {
  return new Promise(function (resolve) {
    setTimeout(function () {
      resolve("done");
    }, ms);
  });
}

console.log("Start");
waitMs(10).then(function (msg) {
  console.log("Resolved:", msg);
});
Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 2

الرفض والتقاط الخطأ

استخدموا reject(Error) عند حدوث فشل. ويتولى catch معالجة أي رفض يحدث قبله في السلسلة.

// Reject to signal an error; handle with catch
function maybeFail(ok) {
  return new Promise(function (resolve, reject) {
    if (ok) {
      resolve("ok");
    } else {
      reject(new Error("bad"));
    }
  });
}

maybeFail(true)
  .then(function (v) {
    console.log("A:", v);
    return maybeFail(false);
  })
  .catch(function (e) {
    console.log("Caught:", e.message);
  });
Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 3

أساسيات تسلسل then

يمكن لكل then إعادة قيمة أو Promise. وتتلقى الخطوة التالية هذه القيمة.

// Chain then steps; return values flow to the next then
Promise.resolve(2)
  .then(function (n) {
    return n * 3;
  })
  .then(function (n) {
    console.log("Result:", n);
  });
Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 4

التنظيف باستخدام finally

يُستخدم finally للتنظيف بعد النجاح أو الخطأ؛ ولا يتلقى القيمة أو الخطأ.

// finally runs whether fulfilled or rejected
function task(ok) {
  return new Promise(function (resolve, reject) {
    ok ? resolve("yay") : reject(new Error("oops"));
  });
}

task(false)
  .catch(function (e) {
    console.log("Handled:", e.message);
  })
  .finally(function () {
    console.log("Cleanup done");
  });
Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 5

لمحة عن Promise.all

تحل Promise.all بمصفوفة من النتائج، أو تُرفض إذا فشل أحد العناصر.

// Promise.all waits for all; rejects fast if any fail
const a = waitMs(5);
const b = Promise.resolve("B");

Promise.all([a, b])
  .then(function (values) {
    console.log("All:", values);
  })
  .catch(function (e) {
    console.log("All failed:", e.message);
  });
Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 6

اختبار معالجة أخطاء Promise

تحقق سريع: أين تُعالَج الأخطاء؟

Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 7

مراجعة

مراجعة: استخدموا resolve عند النجاح، وreject عند الأخطاء، وسلسلوا الخطوات باستخدام then، وعالجوا المشكلات باستخدام catch، واستخدموا finally للتنظيف.

Promises — الحالات والسلاسل ومعالجة الأخطاء — رسم توضيحي 8

الأسئلة الشائعة

هل درس «Promises — الحالات والسلاسل ومعالجة الأخطاء» مجاني؟

نعم — نص درس «Promises — الحالات والسلاسل ومعالجة الأخطاء» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.

ماذا ستتعلم في «Promises — الحالات والسلاسل ومعالجة الأخطاء»؟

أنشئوا Promises واستخدموها: الحالات (pending/fulfilled/rejected)، وربط العمليات باستخدام then، ومعالجة الأخطاء باستخدام catch/finally تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «Promises — الحالات والسلاسل ومعالجة الأخطاء»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. حلقة الأحداث وأساسيات Task مقابل Microtask
  2. Promises — الحالات والسلاسل ومعالجة الأخطاء
  3. Promise.all / any / race / allSettled — اختيار الأداة المناسبة
← العودة إلى JavaScript Academy