พอดีได้คุยเรื่องของ code ที่พัฒนาด้วย NodeJS + Express เล็กน้อย
ซึ่งมี code บางตัวที่น่าสนใจ
เนื่องจากเป็น code ที่ทำให้การทำงานมันเป็น Blocking IO ซะงั้น
เลยสรุปตัวอย่างไว้นิดหน่อย
เพื่อทำให้เห็นว่ NodeJS มันทำงานอย่างไร
เมื่อมีจำนวน concurrent ของผู้ใช้งานเยอะ ๆ

ตัวอย่าง code ง่าย ๆ

แยกเป็น

  • / คือ router หลัก
  • /block คือ code ที่ทำงานแบบ blocking ซึ่งจะรอไปจบกว่าเวลาจะเกิน 1 วินาที
  • /non-block คือ code ที่ทำงานแบบ non-blocking แน่นอนว่าจะรอ 1 วินาทีเช่นเดียวกัน

คำอธิบาย

ระหว่าง /block และ /non-block จะได้ผลการทำงานที่แตกต่างกัน
เนื่องจาก NodeJS นั้นทำงานแบบ Single thread นั่นเอง
ถ้าเจอ code แบบ blocking เข้าไปแล้ว
request อื่น ๆ ก็ต้องรอเข้าคิวนั่นเอง
ทำให้การทำงานช้ามาก ๆ

ผลการทดสอบแบบง่าย ๆ

เขียน code เพื่อดูผล จะทำให้เข้าใจมากขึ้นเยอะเลย
ดังนั้นรูปแบบการเขียน code จึงสำคัญมากเช่นกัน