การลองใหม่และทางเลือกเมื่อออฟไลน์
กู้คืนจากความล้มเหลวชั่วคราวอย่างเหมาะสม
การลองใหม่และทางเลือกเมื่อออฟไลน์ เป็นบทเรียน Kotlin Multiplatform Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Multiplatform Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน
ความล้มเหลวบางอย่างเกิดขึ้นชั่วคราว
การหมดเวลามักหายได้เมื่อ尝試อีกครั้ง ให้ถือว่า ข้อผิดพลาดชั่วคราว เป็นกรณีที่ควรลองใหม่ ไม่ใช่ทางตันสุดท้ายสำหรับผู้ใช้
ลองใหม่เฉพาะข้อผิดพลาดที่เหมาะสม
ให้ลองใหม่เฉพาะชนิด ชั่วคราว เช่น การหมดเวลาของเครือข่าย ข้อผิดพลาดในการแยกวิเคราะห์จะล้มเหลวซ้ำทุกครั้ง ดังนั้นการลองใหม่จึงเป็นเพียงการเสียแรงโดยเปล่าประโยชน์
วงรอบการลองใหม่แบบง่าย
ห่อการเรียกใช้ไว้ใน วงรอบ ขนาดเล็กที่ลองทำงานไม่กี่ครั้ง หากสำเร็จในที่สุด ให้ส่ง Success กลับ มิฉะนั้นให้ดำเนินต่อไปจนถึง Failure
repeat(3) {
val r = fetch()
if (r is Success) return r
}เว้นระยะระหว่างการลอง
การยิงคำขอซ้ำทันทีมักไม่ช่วยอะไร ให้เพิ่ม ช่วงหน่วงเวลา ระหว่างแต่ละครั้ง เพื่อเปิดโอกาสให้เซิร์ฟเวอร์ที่มีปัญหาฟื้นตัว
delay(attempt * 500L)จำกัดจำนวนครั้งที่ลอง
อย่าวนซ้ำตลอดไป กำหนด ค่าสูงสุดไว้ที่สองหรือสามครั้ง เพื่อไม่ให้ผู้ใช้ต้องรอบริการที่หยุดทำงานจริง ๆ อย่างไม่มีที่สิ้นสุด
ลองใช้แคช
เมื่อใช้การลองใหม่จนหมดแล้ว ให้ตรวจสอบ พื้นที่จัดเก็บในเครื่อง การแสดงข้อมูลที่เก่าไปเล็กน้อยยังดีกว่าการแสดงหน้าจอว่างเปล่าหรือเสียหาย
แสดงข้อมูลเก่า แล้วค่อยปรับปรุง
รูปแบบที่เป็นมิตรคือ แสดงข้อมูลเก่าระหว่างตรวจสอบใหม่: แสดงข้อมูลที่แคชไว้ทันที แล้วค่อยดึงข้อมูลล่าสุดเบื้องหลังอย่างเงียบ ๆ
แจ้งผู้ใช้ว่าออฟไลน์
เมื่อเปลี่ยนไปใช้แคช ให้ตั้งค่า ตัวบ่งชี้ออฟไลน์ ในสถานะ เพื่อให้ส่วนติดต่อผู้ใช้แสดงแบนเนอร์เล็ก ๆ ว่าเนื้อหาอาจเก่า
โครูทีนทำให้โค้ดสะอาด
เนื่องจากโค้ดนี้ทำงานในฟังก์ชัน suspend การหน่วงเวลาและการลองใหม่จึงอ่านเหมือนโค้ดตามลำดับทั่วไป โดยไม่ต้องจัดการการเรียกกลับหรือเธรด
suspend fun loadWithRetry(): Result<User>รักษาความสามารถในการยกเลิก
เคารพ การยกเลิก: หากหน้าจอถูกปิดระหว่างการลองใหม่ การทำงานพร้อมกันแบบมีโครงสร้างจะหยุดวงรอบ เพื่อไม่ให้มีงานเบื้องหลังรั่วค้าง
จุดเริ่มต้นที่ทนทานเพียงจุดเดียว
ผู้เรียกเพียงเรียกใช้ loadWithRetry แล้วรับผลลัพธ์ที่ดีที่สุด ได้แก่ ข้อมูลล่าสุด ข้อมูลจากแคช หรือ Failure ที่ชัดเจน โดยทั้งหมดตัดสินใจในโค้ดที่ใช้ร่วมกัน
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ลองคิดดูว่าความล้มเหลวใดควรลองอีกครั้ง
สรุป
คุณลองใหม่สำหรับข้อผิดพลาดชั่วคราวโดยเพิ่มช่วงหน่วงเวลา จำกัดจำนวนครั้ง เปลี่ยนไปใช้ข้อมูลแคชพร้อมตัวบ่งชี้ออฟไลน์ และรักษาความสามารถในการยกเลิกไว้ในโค้ดที่ใช้ร่วมกัน 🔄
คำถามที่พบบ่อย
บทเรียน “การลองใหม่และทางเลือกเมื่อออฟไลน์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การลองใหม่และทางเลือกเมื่อออฟไลน์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Multiplatform Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การลองใหม่และทางเลือกเมื่อออฟไลน์”
กู้คืนจากความล้มเหลวชั่วคราวอย่างเหมาะสม คุณปฏิบัติ Kotlin Multiplatform Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Multiplatform Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Multiplatform Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การลองใหม่และทางเลือกเมื่อออฟไลน์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Multiplatform Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Multiplatform Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิดผลลัพธ์แบบปิดผนึก
- ดักจับข้อผิดพลาดเครือข่ายและการแยกวิเคราะห์
- แมปข้อผิดพลาดเป็นข้อความ UI
- การลองใหม่และทางเลือกเมื่อออฟไลน์