Kotlin: withContext () เทียบกับ Async-await
ฉันอ่านเอกสาร kotlinแล้วและถ้าฉันเข้าใจอย่างถูกต้องฟังก์ชัน Kotlin ทั้งสองจะทำงานดังนี้: withContext(context): สลับบริบทของโครูทีนปัจจุบันเมื่อบล็อกที่กำหนดดำเนินการโครูทีนจะสลับกลับไปยังบริบทก่อนหน้า async(context): เริ่มโครูทีนใหม่ในบริบทที่กำหนดและหากเราเรียก.await()ใช้Deferredงานที่ส่งคืนมันจะระงับการเรียกโครูทีนและกลับมาทำงานต่อเมื่อบล็อกที่ดำเนินการภายในโครูทีนที่ถูกสร้างจะส่งกลับ ตอนนี้สำหรับสองเวอร์ชันต่อไปนี้code: เวอร์ชัน 1: launch(){ block1() val returned = async(context){ block2() }.await() block3() } เวอร์ชัน 2: launch(){ block1() val returned = withContext(context){ block2() } block3() } ในทั้งสองเวอร์ชัน block1 (), block3 () ดำเนินการในบริบทเริ่มต้น (commonpool?) โดยที่ block2 () ดำเนินการในบริบทที่กำหนด การดำเนินการโดยรวมเป็นแบบซิงโครนัสกับคำสั่ง block1 () -> block2 () …