มามะ หลังจากที่เราได้พูดคร่าวๆเกี่ยวกับ Node js ไปแล้วในบทความที่แล้ว คราวนี้มาลองดูกันสิ๊เจ้า Node js เราจะเล่นกับมันยังไง
ต้องใช้ท่าไหน ต้องหมุนตัวกลับหลังหันเลยมั้ย ถึงจะใช้มันได้
มาลองกันที่คำสั่งง่ายๆที่ทุกคนเวลาเริ่มเขียนโปรแกรมไม่ว่าจะภาษาไหน ต้องลองเขียน “Hello world”
ให้ลองสร้างไฟล์ขึ้นมาไฟล์หนึ่ง ให้ชื่ออะไรก็ได้ นามสกุล .js
ในตัวอย่างผมจะทำการสร้างไฟล์ชื่อ hello_world.js
จากนั้นลองเอา code นี้ไปแปะดูครับ
console.log('hello world');
วิธีรัน Nodejs ก็ใช้วิธีเดียวกับครั้งที่แล้วเลย คือ node (filename)
node hello_world.js
ปิ๊งงงง ออกมาแล้ว hello world
แต่ถ้าใครเคยเขียน javascriptจะรู้ทันทีว่าไอ้คำสั่ง console.log(); มันคือคำสั่งของ javascript นิหว่าาา อย่างที่เคยเล่าให้ฟัง node js ก็คือลูกหลานของ javascript นั้นเอง
ถ้า hello world บรรทัดเดียวมันจะง่ายไป มาลองหลายๆบรรทัด
แล้วมาลองดูผลลัพธ์กันสิ๊
ก็ยัง Ok นะ สั่งให้แสดง hello world , hello world2 , hello world 3 ก็เรียงตามลำดับดีนิ
แต่ถ้าเราลองเป็นแบบนี้ละ
บรรทัด
1 2 3 | setTimeout((function(){ console.log('hello world2'); }), 200); |
ยังไม่อธิบายละเอียดเนาะ แต่ให้เข้าใจว่า มันคือการให้หน่วยเวลาไว้ 200ms แล้วให้ทำคำสั่ง console.log(‘hello world2’);
ฉะนั้นผลลัพธ์จะได้อะไร???
ทุกคนพร้อมใจกันตอบแน่ๆว่ามันเหมือนเดิม แค่จะแสดงผลช้าลง 200ms ถูกมั้ยครับ เพราะจะโดนบรรทัด hello world2 หน่วงไว้
แต่ผิด!! ..!!
เอ้าาาาา ทำไม Hello world3 , Hello world4 ดันขึ้นมาก่อนละ ??
ยังจำได้มั้ย? บทความก่อนหน้า Node js : Say hi what is it ?
การทำงานของ node js คือ non-Blocking I/O ฉะนั้นมันจะหา way หรือ คำสั่งไหนที่ทำงานได้เร็วขึ้นมาทำก่อน แทนที่จะต้องรอ มันจะข้าม จุดที่ต้องรอไป
หรือจริงๆแล้วแนวคิดของ non-Blocking I/O คือการเรียกไปแล้วไม่รอการตอบกลับ แต่จะข้ามไปทำงานอื่นก่อน เมื่อมันต้องกลับมาถึงจะทำ
จะเห็นว่าเราสั่งหน่วงเวลาไว้ 200ms node js มันรู้สึกว่าถ้าทำบรรทัดนี้จะทำให้โปรแกรมช้าลงนะ งั้นข้ามไปทำบรรทัดอื่นก่อนดีกว่า
แล้วค่อยกลับมาทำบรรทัดนี้ . . และนี้เป็นเหตุผลว่าทำไม node js ถึงทำได้ทำงานได้รวดเร็ว แต่ก็เป็นอีกเหตุผลว่าหลายคนบอกว่ามันยากกก
เพราะการที่เราจะคุมให้มันทำงานตาม step 1 , 2 ,3 มันอาจจะไม่ใช่ธรรมชาติของ node js สักทีเดียว แต่มันย่อมมีวิธีในการทำได้
สรุป
- Hello world ง่ายๆ บรรทัดเดียวจบ
- หากเคยเขียนภาษาอื่นมา ที่ทำงานเรียงจากบรรทัดบนลงล่าง ให้เปลี่ยนความคิดได้เลย node js อาจจะหยิบบรรทัดล่างสุดมาทำก่อนก็ได้
ขอบคุณครับ
ผิดพลาดประการใดขออภัย
iMa8.