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

การทำงานพร้อมกันแบบมีโครงสร้างและฟังก์ชัน async

กำหนดฟังก์ชัน async เรียกใช้ด้วย await และทำความเข้าใจ การทำงานพร้อมกันแบบมีโครงสร้าง : งานลูกต้องทำเสร็จก่อนขอบเขตของงานแม่จะสิ้นสุด

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

เหตุใดจึงต้องใช้การทำงานแบบไม่พร้อมกันและการรอผล

การทำงานแบบไม่พร้อมกันและการรอผลช่วยให้คุณเขียนโค้ดแบบไม่พร้อมกันที่อ่านได้เหมือนโค้ดแบบพร้อมกัน เมื่อใช้ การทำงานพร้อมกันแบบมีโครงสร้าง งานลูกจะผูกกับอายุการใช้งานของขอบเขต จึงไม่มีงานรั่วไหล

ฟังก์ชันแบบไม่พร้อมกันแรกของคุณ

ฟังก์ชันแบบ ไม่พร้อมกัน สามารถ รอผลจากงานแบบไม่พร้อมกันอื่นได้ สร้าง Task ในสคริปต์หรือพื้นที่ทดลองเพื่อเรียกใช้ฟังก์ชันดังกล่าว

// 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
}

หยุดชั่วคราว แล้วทำงานต่อ

การรอผลจะหยุด งาน ไว้จนกว่าผลลัพธ์จะพร้อม จากนั้นการทำงานจะดำเนินต่ออย่างเป็นระเบียบที่บรรทัดถัดไป

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.")
}

พื้นฐานการประกาศงานแบบไม่พร้อมกัน

ใช้ การประกาศงานแบบไม่พร้อมกัน เพื่อเริ่มงานลูก งานเหล่านี้อยู่ในขอบเขตปัจจุบันและต้องรอผลก่อนออกจากขอบเขต

// 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
}

แนวทาง

เคล็ดลับ:

  • คิดเป็นงาน ไม่ใช่เธรด
  • ใช้ การประกาศงานแบบไม่พร้อมกันสำหรับงานพี่น้อง และ await ก่อนออกจากขอบเขต
  • ใช้ Task.sleep เพื่อหยุดชั่วคราวในการสาธิต ส่วนแอปจริงควรรอการทำงานรับส่งข้อมูลผ่านเครือข่ายหรือไฟล์

คำจำกัดความของการรอผล

ตรวจสอบอย่างรวดเร็ว: await ทำอะไร

สรุปทบทวน

สรุปทบทวน: กำหนดฟังก์ชันเป็น แบบไม่พร้อมกัน และเรียกใช้ด้วย การรอผล ใช้ การประกาศงานแบบไม่พร้อมกันเพื่อเริ่มงานพี่น้อง และอาศัย การทำงานพร้อมกันแบบมีโครงสร้างเพื่อให้งานลูกสิ้นสุดก่อนงานแม่

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

บทเรียน “การทำงานพร้อมกันแบบมีโครงสร้างและฟังก์ชัน async” ฟรีหรือไม่

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

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

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

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

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

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

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

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

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

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

  1. การทำงานพร้อมกันแบบมีโครงสร้างและฟังก์ชัน async
  2. async let, Task และการยกเลิก
  3. try await และการส่งต่อข้อผิดพลาด
← กลับไปที่ Swift Academy