Swift Academy · บทเรียน

ไวยากรณ์ async/await และการเรียกฟังก์ชันแบบอะซิงโครนัส

เขียนและเรียกฟังก์ชันแบบอะซิงโครนัส พร้อมทำความเข้าใจจุดพักการทำงาน

บทเรียน 1 จาก 412 ขั้นตอน

ไวยากรณ์ async/await และการเรียกฟังก์ชันแบบอะซิงโครนัส เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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" } ```

การเชื่อมต่อการเรียกกลับกับงานแบบอะซิงโครนัส

```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` ใช้เชื่อมต่อการเรียกกลับ ถัดไป: งานและการยกเลิก
เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

คำถามที่พบบ่อย

บทเรียน “ไวยากรณ์ async/await และการเรียกฟังก์ชันแบบอะซิงโครนัส” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ไวยากรณ์ async/await และการเรียกฟังก์ชันแบบอะซิงโครนัส” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ไวยากรณ์ async/await และการเรียกฟังก์ชันแบบอะซิงโครนัส”

เขียนและเรียกฟังก์ชันแบบอะซิงโครนัส พร้อมทำความเข้าใจจุดพักการทำงาน คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ไวยากรณ์ async/await และการเรียกฟังก์ชันแบบอะซิงโครนัส” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ไวยากรณ์ async/await และการเรียกฟังก์ชันแบบอะซิงโครนัส
  2. Task และการยกเลิก Task
  3. async let และงานลูกที่ทำงานพร้อมกัน
  4. แอกเตอร์: ปกป้องสถานะร่วมที่เปลี่ยนแปลงได้
← กลับไปที่ Swift Academy