JavaScript
Async JavaScript
Microtask vs Macrotask
TODO: เข้าใจความแตกต่างระหว่าง microtask queue และ macrotask queue — รู้ว่า Promise callback มีลำดับความสำคัญสูงกว่า setTimeout
TODO: Task Queue สองระดับ
TODO: อธิบายว่า JavaScript มี task queue 2 ระดับ — Macrotask (setTimeout, setInterval, I/O) และ Microtask (Promise.then/catch/finally, queueMicrotask)
TODO: Macrotask Queue
TODO: อธิบาย macrotask queue — setTimeout, setInterval, I/O callbacks เข้าคิวนี้ Event Loop ดึงทีละ task
TODO: Microtask Queue
TODO: อธิบาย microtask queue — Promise.then/catch/finally, queueMicrotask — microtask มี priority สูงกว่า
TODO: ลำดับการทำงาน
TODO: อธิบายกฎ — microtask ต้องทำงานจนหมด queue ก่อนที่ Event Loop จะดึง macrotask ถัดไป — พร้อมตัวอย่าง Promise.resolve().then() vs setTimeout
TODO: เปรียบเทียบ Promise.then กับ setTimeout
console.log("เริ่ม");
setTimeout(() => {
console.log("macrotask: setTimeout");
}, 0);
Promise.resolve().then(() => {
console.log("microtask: Promise.then");
});
console.log("จบ");TODO: Recursive Microtask Blocking
TODO: ข้อควรระวัง — ถ้า microtask สร้าง microtask ใหม่แบบ recursive จะบล็อก macrotask ทั้งหมด
TODO: Lab 1
TODO: Add lab exercise with check-playground here.