event loop คือกลไกที่ให้ Node.js แบบ single-threaded สามารถทำ non-blocking I/O ได้ มันประมวลผลคิวของ callbacks อย่างต่อเนื่อง: ในขณะที่ JavaScript ของคุณทำงานบนหนึ่ง thread, I/O operations จะถูกส่งต่อออกไป และ callbacks ของพวกมันจะรัน loop เมื่อเสร็จสิ้น
ขั้นตอนของ loop
แต่ละ iteration ("tick") เคลื่อนผ่านขั้นตอนที่เรียงลำดับ, แต่ละขั้นตอนมี callback queue ของตัวเอง:
┌───────────────────────────┐
┌─>│ timers (setTimeout) │ ← expired timer callbacks
│ ├───────────────────────────┤
│ │ pending I/O callbacks │
│ ├───────────────────────────┤
│ │ poll (I/O events) │ ← retrieve new I/O; execute their callbacks
│ ├───────────────────────────┤
│ │ check (setImmediate) │
│ ├───────────────────────────┤
└──│ close callbacks │
└───────────────────────────┘
