Swift Academy · درس

صياغة async/await واستدعاء الدوال غير المتزامنة

اكتبوا الدوال غير المتزامنة واستدعُوها، وافهموا نقاط التعليق.

الدرس 1 من 412 خطوة

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

مرحبًا

تجعل صيغة async/await في Swift قراءة التعليمات البرمجية غير المتزامنة شبيهة بقراءة التعليمات البرمجية المتزامنة. تشير `async` إلى دالة يمكنها التعليق، بينما تحدد `await` نقطة تعليق.

دالة async

```swift func fetchUser(id: Int) async throws -> User { let url = URL(string: "https://api.example.com/users/\(id)")! let (data, _) = try await URLSession.shared.data(from: url) return try JSONDecoder().decode(User.self, from: data) } ```

الاستدعاء باستخدام await

```swift Task { let user = try await fetchUser(id: 42) print(user.name) } ```

نقاط التعليق

تُعد `await` نقطة تعليق؛ إذ تتوقف الدالة عندها وتعيد الخيط إلى النظام. وعند اكتمال العملية غير المتزامنة، يُستأنف التنفيذ.

استخدام async مع MainActor

```swift @MainActor func updateUI() async { let data = try? await fetchData() label.text = data?.description ?? "Error" } ```

ربط دوال الاستدعاء اللاحقة بـ async

```swift func fetchAsync() async throws -> Data { try await withCheckedThrowingContinuation { cont in URLSession.shared.dataTask(with: url) { data, _, error in if let data { cont.resume(returning: data) } else { cont.resume(throwing: error!) } }.resume() } } ```

معالجة الأخطاء باستخدام try await

```swift do { let user = try await fetchUser(id: 1) render(user) } catch URLError.notConnectedToInternet { showOfflineMessage() } catch { showError(error) } ```

استخدام await في حلقات for

```swift for id in userIds { let user = try await fetchUser(id: id) // sequential process(user) } ``` يجلب هذا العنصرَات واحدًا تلو الآخر. وللجلب المتزامن، استخدم async let.

إرجاع القيم

```swift func sum(a: Int, b: Int) async -> Int { await Task.sleep(nanoseconds: 1_000_000) return a + b } let result = await sum(a: 3, b: 4) // 7 ```

الخصائص غير المتزامنة

```swift var thumbnail: UIImage { get async { try! await loadImage(url: imageURL) } } let img = await post.thumbnail ```

اختبار سريع

ماذا تعني `await` عند نقطة تعليق التنفيذ؟

مراجعة

أهم النقاط: • `async` — تحدد دالة قابلة للتعليق • `await` — نقطة تعليق التنفيذ؛ ويُحرَّر الخيط أثناء الانتظار • استخدم `try await` مع الدوال غير المتزامنة التي قد ترمي أخطاء • استخدم `@MainActor` لتنفيذ أعمال واجهة المستخدم • تربط `withCheckedThrowingContinuation` دوال الاستدعاء اللاحقة التالي: Task والإلغاء.
البدء مجانًا

تعلم Swift مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
122
الدروس
409

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

هل درس «صياغة async/await واستدعاء الدوال غير المتزامنة» مجاني؟

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

ماذا ستتعلم في «صياغة async/await واستدعاء الدوال غير المتزامنة»؟

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

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

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

كم من الوقت يستغرق درس «صياغة async/await واستدعاء الدوال غير المتزامنة»؟

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

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

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

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

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