0Pricing
Swift Academy · درس

التزامن المنظّم والدوال غير المتزامنة

عرّف دوال async واستدعها باستخدام await ، وافهم structured concurrency : تنتهي المهام الفرعية قبل خروج النطاق الأب.

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

لماذا async/await؟

يتيح لك async/await كتابة كود غير متزامن يُقرأ كأنه كود متزامن. ومع التزامن المنظّم، ترتبط المهام الفرعية بأعمار النطاقات، فلا يحدث تسرّب.

أول دالة async لك

يمكن لدالة async انتظار أعمال async أخرى باستخدام await. أنشئ Task في scripts/playgrounds لاستدعائها.

// Simulate a short async delay, then return a value
func fetchNumber() async -> Int {
    try? await Task.sleep(nanoseconds: 200_000_000) // ~200ms
    return 42
}

// Call sites must use "await" from an async context or a Task
Task {
    let n = await fetchNumber()
    print("Fetched:", n)  // 42
}

التعليق ثم الاستئناف

يعلّق await المهمة حتى تصبح النتيجة جاهزة، ثم يُستأنف التنفيذ بسلاسة في السطر التالي.

func greet(after seconds: Double) async -> String {
    let ns = UInt64(seconds * 1_000_000_000)
    try? await Task.sleep(nanoseconds: ns)
    return "Hello after \(Int(seconds))s"
}

Task {
    print(await greet(after: 1.0))
    print("Back on the same task after await.")
}

أساسيات async let

استخدم async let لبدء مهام فرعية. تنتمي هذه المهام إلى النطاق الحالي، ويجب انتظارها قبل الخروج من النطاق.

// Run child tasks concurrently within the same scope
func fetchUser() async -> String { "Ana" }
func fetchScore() async -> Int { 90 }

Task {
    async let name = fetchUser()
    async let score = fetchScore()
    // Both start immediately; await joins them before use
    let summary = await "\(name): \(score)"
    print(summary) // "Ana: 90"
    // Scope ends -> child tasks are awaited automatically (structured)
}

المهام الأصلية تنتظر الفرعية

يعني التزامن المنظّم أن المهام الأصلية لا يمكنها الانتهاء قبل المهام الفرعية. ويمنع ذلك العمل اليتيم ويجعل الأعمار قابلة للتوقّع.

// Parent Task encapsulates children lifetimes
func loadProfile() async -> String {
    async let name = fetchUser()
    async let score = fetchScore()
    return await "\(name) (\(score))"
}

Task {
    let profile = await loadProfile()
    print(profile) // e.g., "Ana (90)"
    // loadProfile does not return until its children are done
}

إرشادات

نصائح:

  • فكّر في المهام، لا في الخيوط.
  • استخدم async let للأعمال الشقيقة، واستخدم await قبل الخروج من النطاق.
  • استخدم Task.sleep في العروض التوضيحية؛ أما التطبيقات الفعلية فتنتظر عمليات الشبكة أو الملفات.

تعريف await

تحقق سريع: ماذا يفعل await؟

خلاصة

الخلاصة: علّم الدوال باستخدام async واستدعها باستخدام await. استخدم async let لبدء المهام الشقيقة، واعتمد على التزامن المنظّم لإنهاء المهام الفرعية قبل المهام الأصلية.

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

هل درس «التزامن المنظّم والدوال غير المتزامنة» مجاني؟

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

ماذا ستتعلم في «التزامن المنظّم والدوال غير المتزامنة»؟

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

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

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

كم من الوقت يستغرق درس «التزامن المنظّم والدوال غير المتزامنة»؟

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

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

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

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

  1. التزامن المنظّم والدوال غير المتزامنة
  2. async let وTask والإلغاء
  3. try await وانتشار الأخطاء
← العودة إلى Swift Academy