0Pricing
Swift Academy · درس

‏async let والمهام الابنة المتزامنة

شغّلوا الأعمال غير المتزامنة المستقلة بالتوازي باستخدام روابط async let.

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

مرحبًا

تنفّذ `async let` عدة عمليات غير متزامنة بالتزامن؛ إذ تبدأ جميعها فورًا، وتنتظر `await` نتائجها عند الحاجة.

التنفيذ المتسلسل مقابل المتزامن

```swift // Sequential — slow: let a = try await fetchA() let b = try await fetchB() // Concurrent with async let — fast: async let a = fetchA() async let b = fetchB() let (resultA, resultB) = try await (a, b) ```

صياغة async let

```swift async let title = fetchTitle(id) async let author = fetchAuthor(id) async let content = fetchContent(id) let article = Article( title: try await title, author: try await author, content: try await content ) ```

إما الكل أو لا شيء

إذا أدى أي ربط باستخدام `async let` إلى رمي خطأ، ينتشر الخطأ. ويلغي النظام تلقائيًا المهام الشقيقة.

استخدام async let في الحلقات

```swift var results: [Data] = [] await withTaskGroup(of: Data.self) { group in for url in urls { group.addTask { try await URLSession.shared.data(from: url).0 } } for await data in group { results.append(data) } } ```

TaskGroup

```swift await withTaskGroup(of: Int.self) { group in for i in 1...5 { group.addTask { i * i } } var squares: [Int] = [] for await square in group { squares.append(square) } print(squares.sorted()) // [1,4,9,16,25] } ```

ThrowingTaskGroup

```swift try await withThrowingTaskGroup(of: User.self) { group in for id in ids { group.addTask { try await fetchUser(id: id) } } for try await user in group { process(user) } } ```

شجرة التزامن المنظم

تشكل `async let` وTaskGroup شجرة من المهام. وتنتظر المهام الأصلية اكتمال جميع المهام الفرعية. ويؤدي إلغاء المهمة الأصلية إلى إلغاء جميع المهام الفرعية.

متى تستخدم async let أو TaskGroup

• `async let` — عندما يكون عدد العمليات المتزامنة معروفًا وثابتًا وقت الترجمة • `TaskGroup` — عندما يكون عدد المهام ديناميكيًا، مثل معالجة مصفوفة

تحديد التزامن باستخدام TaskGroup

```swift await withTaskGroup(of: Void.self) { group in let concurrency = 4 var running = 0 for url in urls { if running >= concurrency { await group.next() } group.addTask { await process(url) } running += 1 } } ```

اختبار سريع

ماذا يحدث لمهام `async let` الشقيقة إذا رمت إحداها خطأ؟

مراجعة

أهم النقاط: • `async let x = asyncWork()` — تبدأ فورًا وبالتزامن • `try await x` — تنتظر النتيجة • الكل أو لا شيء: يؤدي الفشل إلى إلغاء المهام الشقيقة • `withTaskGroup` — مجموعة ديناميكية من المهام المتزامنة • التزامن المنظم = إدارة تلقائية للمهام الفرعية التالي: Actors.

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

هل درس «‏async let والمهام الابنة المتزامنة» مجاني؟

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

ماذا ستتعلم في «‏async let والمهام الابنة المتزامنة»؟

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

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

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

كم من الوقت يستغرق درس «‏async let والمهام الابنة المتزامنة»؟

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

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

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

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

  1. صياغة async/await واستدعاء الدوال غير المتزامنة
  2. ‏Task وإلغاء المهام
  3. ‏async let والمهام الابنة المتزامنة
  4. الممثلون: حماية الحالة المشتركة القابلة للتعديل
← العودة إلى Swift Academy