การทำงานแบบ blocking ทำงานแบบ synchronous และยึดครอง JavaScript thread เดียวไว้จนกว่าจะเสร็จ — ในระหว่างนั้นไม่มีอะไรอื่นทำงานได้ ส่วนการทำงานแบบ non-blocking จะเริ่มงาน คืนค่ากลับทันที และส่งผลลัพธ์กลับมาในภายหลังผ่าน callback, Promise หรือ event ดังนั้น thread จึงว่างพอที่จะทำสิ่งอื่นได้
ทำไม Node จึงเป็น single-threaded แต่ยัง non-blocking
JavaScript ของคุณทำงานบน thread ที่ขับเคลื่อนด้วย I/O (ไฟล์ เครือข่าย DNS) จะถูกมอบหมายให้ ซึ่งใช้ความสามารถแบบ async ของ OS และ ขนาดเล็กภายใต้ฝากระโปรง ในขณะที่งานนั้นเกิดขึ้นนอก thread event loop ก็ประมวลผล callback อื่น ๆ ต่อไป เมื่อ I/O เสร็จสิ้น callback ของมันจะถูกจัดคิวและรัน
