พอดีได้คุยเรื่องของ 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 อื่น ๆ ก็ต้องรอเข้าคิวนั่นเอง
ทำให้การทำงานช้ามาก ๆ
ผลการทดสอบแบบง่าย ๆ
[gist id="25cdb90dded559236ad6f079ab5cfcf4" file="result.txt"]เขียน code เพื่อดูผล จะทำให้เข้าใจมากขึ้นเยอะเลย
ดังนั้นรูปแบบการเขียน code จึงสำคัญมากเช่นกัน