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

ลูปเหตุการณ์และไมโครทาสก์

ทำความเข้าใจวิธีที่ Dart จัดตารางงานแบบอะซิงโครนัส

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

เธรดเดียว ไม่ต้องรอ

Dart เรียกใช้โค้ดบนเธรดเดียว แต่แอปไม่ค้าง เคล็ดลับคือลูปเหตุการณ์ ซึ่งจัดตารางงานแทนการบล็อกการทำงาน ⚡

ลูปเหตุการณ์ทำอะไร

ลูปเหตุการณ์ คือวงจรง่าย ๆ: เลือกงานที่รอดำเนินการถัดไป เรียกใช้จนเสร็จ แล้วทำซ้ำ โค้ดของคุณจึงทำงานเป็นช่วง ๆ อย่างเป็นระเบียบและต่อเนื่อง

โค้ดทำงานพร้อมกันก่อน

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

คิวสองคิว

ลูปจะดึงงานจากสองคิว ได้แก่ คิวไมโครทาสก์และคิวเหตุการณ์ ไมโครทาสก์จะมีลำดับก่อนเหตุการณ์เสมอ

คิวไมโครทาสก์

ไมโครทาสก์คืองานที่เลื่อนการทำงานขนาดเล็ก เช่น callback ของ Future ที่ทำงานเสร็จแล้ว ลูปจะจัดการไมโครทาสก์ทั้งหมดก่อนแตะคิวเหตุการณ์

คิวเหตุการณ์

คิวเหตุการณ์เก็บงานขนาดใหญ่กว่า เช่น ตัวจับเวลา การอ่านไฟล์ การแตะหน้าจอ และการตอบกลับจากเครือข่าย งานเหล่านี้จะรอจนกว่าไมโครทาสก์ทั้งหมดจะเสร็จ

การจัดตารางไมโครทาสก์

คุณสามารถส่งงานไปยังคิวไมโครทาสก์ด้วย scheduleMicrotask งานจะทำงานหลังจากโค้ดปัจจุบัน แต่ก่อนเหตุการณ์ใด ๆ

scheduleMicrotask(() => print("microtask"));
print("right now");

การจัดตารางเหตุการณ์

ตัวจับเวลา (หรือ Future.delayed ที่มีค่าเป็นศูนย์) จะนำ callback ไปใส่ในคิวเหตุการณ์ ทำให้ callback ทำงานหลังไมโครทาสก์ที่รอดำเนินการทั้งหมด

Timer.run(() => print("event"));
print("right now");

ไมโครทาสก์มีลำดับก่อน

หากมีงานอยู่ในทั้งสองคิว ไมโครทาสก์จะทำงานก่อน ลำดับนี้ทำให้สายงาน Future ทำงานได้รวดเร็วและคาดเดาได้

scheduleMicrotask(() => print("A"));
Timer.run(() => print("B"));
// prints A then B

เหตุใดการทำงานจึงราบรื่น

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

อย่าปล่อยให้ลูปอดงาน

การเติมงานลงในคิวไมโครทาสก์มากเกินไปอาจขัดขวางเหตุการณ์ไปตลอด ทำให้การรับข้อมูลหยุดค้าง ควรให้งานไมโครทาสก์สั้น ๆ และเปิดโอกาสให้เหตุการณ์ทำงานบ้าง

ตรวจสอบความเข้าใจ

ตรวจสอบความเข้าใจอย่างรวดเร็วเกี่ยวกับลำดับของคิว

ทบทวน: ลูปเหตุการณ์

คุณได้เรียนรู้ว่าลูปเหตุการณ์จะเรียกใช้โค้ดแบบ sync ก่อน จากนั้นจัดการไมโครทาสก์ แล้วจึงจัดการเหตุการณ์ ลำดับนี้ทำให้ Dart ใช้เธรดเดียวแต่ยังทำงานได้ราบรื่น 🎉

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

บทเรียน “ลูปเหตุการณ์และไมโครทาสก์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ลูปเหตุการณ์และไมโครทาสก์”

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

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

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

บทเรียน “ลูปเหตุการณ์และไมโครทาสก์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ลูปเหตุการณ์และไมโครทาสก์
  2. สร้างและรอค่า Future
  3. การจัดการข้อผิดพลาดในโค้ดอะซิงโครนัส
  4. Future.wait และงานแบบขนาน
← กลับไปที่ Dart Academy