0Pricing
Swift Academy · บทเรียน

async let และงานลูกที่ทำงานพร้อมกัน

เรียกใช้งานอะซิงโครนัสที่เป็นอิสระต่อกันพร้อมกันด้วยการผูกค่า async let

async let และงานลูกที่ทำงานพร้อมกัน เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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 และงานลูกที่ทำงานพร้อมกัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “async let และงานลูกที่ทำงานพร้อมกัน”

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

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

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

บทเรียน “async let และงานลูกที่ทำงานพร้อมกัน” ใช้เวลานานแค่ไหน

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

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

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

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

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