NodeJS Event Emitter สำคัญฉะไหน
10 February, 2019, By Tar Jarupong
วันนี้เราจะได้รู้กันว่าตัว NodeJS คืออะไร ดียังไง เริ่มได้~~~
Node Event Emitter ?
ด้วยความที่ว่า NodeJS เองทำงานเป็นแบบ event-driven architecture หรือเรียกแบบไทยๆว่าการขับเคลื่อนทุกอย่างด้วย Event มาถึงตรงนี้ทุกคนคงจะงงว่าแล้วตัว event-driven คืออะไร
รูปนี้ทุกคนคงเข้าใจ event driven ทุกคนจะเห็นว่ามันคือ Observer design pattern นั้นเองนะครับซึ่งตัว Observer pattern เองเป็นฐานในการทำ event driven ผมขอไม่ลงลึกเรื่อง Observer pattern ง่ายๆก็คือ Observer pattern เอาไว้สำหรับสังเกตุการเปลี่ยนแปลงข้อมูลว่าเปลี่ยนแปลงไปยังไงบ้างนั้นเองครับ
Node Event ใช้งานยังไง ?
มาเริ่มใช้ Event emitter กันเลยครับผมขอวาดภาพว่าเราจะทำ service อะไรด้วย Event Emitter นะครับ
ผมจะลองเขียนตามนี้นะครับ เริ่ม~~~
#1 ทำการสร้าง require และสร้าง event ตัวนึง
const EventEmitter = require('events');
const myService = new EventEmitter();
#2 สร้างตัว emit data
// ให้มีการส่งข้อมูลทุกๆ 1 วินาที
setInterval(()=>{
myService.emit('registration',{
name: "Tar",
email: "Tar@email.com"
})
},1000)
ต้องอธิบายก่อนว่าตัว registration คือชื่อ event ครับส่วนตัว object คือข้อมูลที่เราจะส่งผ่านตัว regitration event
#3 สร้างตัว listener สำหรับ email & admin
// ใครยังไม่เคยใช้ => หรือ arrow function ผมมี ref ไว้ข้างล่างครับ
// email service
myService.on('registration', (userData) => {
console.log("\n\n");
console.log(`ส่ง email ไปหาคุณ ${userData.name} ไปที่ ${userData.email}`)
})
// admin service
myService.on('registration', (userData)=>{
console.log(`เจ้านายครับมีลูกค้าสมัครสมาชิก คุณ ${userData.name}$`)
})
#4 โค๊ดเต็มๆตามนี้เลยครับ
const EventEmitter = require('events');
const myService = new EventEmitter();
setInterval(()=>{
myService.emit('registration',{
name: "Tar",
email: "Tar@email.com"
})
},1000)
myService.on('registration', (userData) => {
console.log("\n\n");
console.log(`ส่ง email ไปหาคุณ ${userData.name} ไปที่ ${userData.email}`)
})
myService.on('registration', (userData)=>{
console.log(`เจ้านายครับมีลูกค้าสมัครสมาชิก คุณ ${userData.name}$`)
})
#5 มาดูผลลัพธ์กันเลยครับ
ก็จบกันไปแล้วนะครับสำหรับ NodeJS Event Emitter แบบพื้นฐานมาก!!!! ผมก็หวังว่าผู้อ่านจะเข้าใจการทำงานและการเขียน Event Emitter นะครับผม วันนี้ผมต้าขอตัวลาไปก่อนชะแว๊บ~~~
ปล. เดี๋ยวจะมาเขียนเพิ่มเติมว่าไปปรับใช้งานยังไงนะครับ ^ _ ^
Ref: