การทำงานพร้อมกันแบบมีโครงสร้างและฟังก์ชัน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การทำงานพร้อมกันแบบมีโครงสร้างและฟังก์ชัน async
- async let, Task และการยกเลิก
- try await และการส่งต่อข้อผิดพลาด