0Pricing
JavaScript Academy · درس

كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي

أنشئوا دوال async، وانتظروا النتائج، والتقطوا الأخطاء، وقارنوا بين الأنماط التسلسلية والمتوازية

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

مقدمة إلى async/await

الهدف: استخدام async/await بأمان.

  • إنشاء دوال async
  • انتظار القيم
  • معالجة الأخطاء باستخدام try/catch
  • التنفيذ المتوازي مقابل التسلسلي
كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 1

دالة مساعدة صغيرة لـ Promise

أنشئوا دالة مساعدة صغيرة تعتمد على Promise لاختبار عمليات await.

// delay returns a Promise that resolves after ms
function delay(ms, value) {
  return new Promise(function (resolve) {
    setTimeout(function () { resolve(value); }, ms);
  });
}

// Example usage
delay(10, "ok").then(function (v) {
  console.log("delay:", v);
});
كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 2

أساسيات الدوال غير المتزامنة

تحدد async دالة تعيد Promise؛ ويمكنكم استخدام await داخلها.

// An async function can use await inside
async function greet() {
  const name = await delay(5, "Ayla");
  console.log("Hello,", name);
}

// Call it
greet();
كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 3

try/catch مع await

غلّفوا عمليات await داخل try/catch عندما تكون إحدى الخطوات قابلة للرفض.

// Simulate a failing task
function failAfter(ms, message) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () { reject(new Error(message)); }, ms);
  });
}

async function runSafe() {
  try {
    const v = await failAfter(5, "boom");
    console.log("Value:", v);
  } catch (e) {
    console.log("Caught:", e.message);
  }
}

runSafe();
كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 4

النمط التسلسلي

التسلسلي: ينتظر كل await اكتمال العملية السابقة؛ لذلك تتجمع الأزمنة.

// Sequential: total time ~ A + B
async function sequential() {
  const a = await delay(8, "A");
  const b = await delay(8, "B");
  console.log("seq:", a + b);
}

sequential();
كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 5

التنفيذ المتوازي باستخدام all

المتوازي: ابدؤوا المهام أولًا، ثم استخدموا await Promise.all؛ ويكون الزمن الإجمالي تقريبًا max(A, B).

// Parallel: start both, then await together
async function parallel() {
  const pa = delay(8, "A");
  const pb = delay(8, "B");
  const results = await Promise.all([pa, pb]);
  console.log("par:", results.join(""));
}

parallel();
كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 6

اختبار المتوازي مقابل التسلسلي

تحقق سريع: ما النمط الأسرع للمهام المستقلة؟

كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 7

مراجعة

مراجعة: كتبتم دوال async، وانتظرتم القيم، وعالجتم الأخطاء باستخدام try/catch، وقارنتم بين عمليات await التسلسلية وPromise.all المتوازية الأسرع.

كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي — رسم توضيحي 8

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

هل درس «كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي» مجاني؟

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

ماذا ستتعلم في «كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي»؟

أنشئوا دوال async، وانتظروا النتائج، والتقطوا الأخطاء، وقارنوا بين الأنماط التسلسلية والمتوازية تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي»؟

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

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

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

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

  1. كتابة الدوال غير المتزامنة؛ try/catch؛ التنفيذ المتوازي مقابل التسلسلي
  2. المهلات والإلغاء باستخدام AbortController
  3. أنماط إعادة المحاولة والتراجع التدريجي
← العودة إلى JavaScript Academy