ฟังก์ชัน Suspend ในรูปแบบ async ของ Swift
ใช้โครูทีน Kotlin จากการทำงานพร้อมกันของ Swift
ฟังก์ชัน Suspend ในรูปแบบ async ของ Swift เป็นบทเรียน Kotlin Multiplatform Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Multiplatform Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน
Suspend พบกับ async
ฟังก์ชัน suspend ของ Kotlin จะถูกเปิดเผยใน Swift เป็นเมธอด async ทำให้ iOS ใช้ await ด้วยการทำงานพร้อมกันแบบ native ของ Swift ได้
suspend fun loadUser(): Userไม่ต้องใช้ Callback
สะพานเชื่อมรุ่นเก่าเคยบังคับให้ใช้ตัวจัดการเมื่อเสร็จสิ้น แต่ KMP รุ่นใหม่จะแปลง suspend เป็น async โดยตรง โค้ด Swift จึงสะอาดและทำงานเป็นลำดับ
ใช้ Await ใน Swift
จาก Swift คุณเพียงใช้ await เรียกใช้ภายในบริบท async coroutine จะทำงานและกลับมาทำงานต่อใน Swift เมื่อเสร็จสิ้น
let user = try await repo.loadUser()ข้อผิดพลาดกลายเป็น throws
หากฟังก์ชัน suspend อาจล้มเหลว Swift จะมองเห็นเป็นเมธอด async แบบโยนข้อผิดพลาด คุณจึงครอบ await ด้วย try และ catch ข้อผิดพลาด
do { try await repo.loadUser() }
catch { print(error) }การยกเลิกส่งต่อถึงกัน
เมื่อ Swift ยกเลิก Task ของตน การยกเลิกนั้นจะส่งต่อเข้าไปยัง coroutine ของ Kotlin และหยุดงานที่ใช้ร่วมกันอย่างเรียบร้อย
เรียกใช้ใน Task
เรียกใช้ฟังก์ชัน async ที่ใช้ร่วมกันภายใน Task ของ Swift เมื่อคุณไม่ได้อยู่ในบริบท async อยู่แล้ว เช่น เมื่อแตะปุ่ม
Task {
let u = try await repo.loadUser()
}เลือก Dispatcher ให้เหมาะสม
coroutine จะทำงานบนตัวจัดการการกระจายงานที่คุณตั้งไว้ในโค้ดที่ใช้ร่วมกัน ดังนั้นงานหนักจะไม่ทำงานบนเธรดหลักของ iOS ตามค่าเริ่มต้น
การส่งคืนค่า
ค่าที่ฟังก์ชัน suspend ส่งคืนจะกลายเป็นผลลัพธ์ของ await ใน Swift โดยถูกจับคู่ผ่านกฎ Kotlin-to-Obj-C ตามปกติ
Unit หมายถึง Void
ฟังก์ชัน suspend ที่ส่งคืน Unit จะปรากฏใน Swift เป็นเมธอด async ที่ไม่ส่งคืนอะไร เช่นเดียวกับ void
สร้างโดย SKIE
KMP พื้นฐานรองรับ async ในระดับเบื้องต้น แต่เครื่องมืออย่าง SKIE สามารถสร้างลายเซ็น Swift ที่ราบรื่นยิ่งขึ้นสำหรับการเรียกใช้ suspend เหล่านี้
เป็นลำดับและอ่านง่าย
ข้อดีสำคัญคืออ่านง่าย: ตรรกะ async ที่ใช้ร่วมกันจะอ่านจากบนลงล่างใน Swift โดยไม่มี callback ซ้อนกันหรือโครงสร้าง callback ที่ยุ่งเหยิง
ตรวจสอบอย่างรวดเร็ว
มาดูกันว่าฟังก์ชัน suspend ให้ความรู้สึกอย่างไรเมื่อเรียกใช้จาก Swift
ทบทวน
Kotlin suspend จะกลายเป็น async ของ Swift: ใช้ await ภายใน Task จัดการข้อผิดพลาดที่ถูกโยน และการยกเลิกจะส่งต่อได้ทั้งสองทาง การทำงานพร้อมกันที่สะอาดและเป็นระเบียบ ✅
คำถามที่พบบ่อย
บทเรียน “ฟังก์ชัน Suspend ในรูปแบบ async ของ Swift” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ฟังก์ชัน Suspend ในรูปแบบ async ของ Swift” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Multiplatform Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชัน Suspend ในรูปแบบ async ของ Swift”
ใช้โครูทีน Kotlin จากการทำงานพร้อมกันของ Swift คุณปฏิบัติ Kotlin Multiplatform Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Multiplatform Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Multiplatform Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ฟังก์ชัน Suspend ในรูปแบบ async ของ Swift” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Multiplatform Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Multiplatform Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- วิธีที่ Kotlin แมปกับ Objective-C
- ฟังก์ชัน Suspend ในรูปแบบ async ของ Swift
- รวบรวม Flow จาก Swift
- @ObjCName และ API ที่เป็นมิตรกับ Swift