Asas Node.js - Events
Kebanyakan function Node.js adalah berasaskan event. Jadi untuk memahami nodejs secara lebih mendalam perlulah kita tahu apa tu even & cara membuat & gunakannya. Definisi event ? Event adalah isyarat yang sesuatu telah berlaku. Boleh rujuk docs Node.js mengenai secara lebih mendalam. Node.js - Events.
Asas EventEmitter
// index.js
const EventEmitter = require('events'); // (1)
const emitter = new EventEmmiter(); // (2)
// (3)
emitter.addListener('onXon', function(arg){
console.log('listener called');
console.log(arg) // {arg1: 'ini data 1', arg2: 'data ke2 di sini'}
});'
// (4)
emitter.emit('onXon', {arg1: 'ini data 1', arg2: 'data ke2 di sini'}); // emmit = beri isyarat yang sesuatu berlaku
- Import class EventEmitter dari package 'events'
- Buat object baru dari class EventEmitter untuk digunakan
- Add event listener, so bila isyarat diberi, lakukan sesuatu
- Beri isyarat untuk listener lakukan sesuatu
Tips:
// cara lagi untuk add event listener yang lebih pendek.
emitter.on('onXon', function(){
console.log('listener called');
});
Implement event in project
Kita akan gunakan project belajar-nodejs
dari post Asas Node.js - Import/Export.
// logger.js
const EventEmitter = require('events'); // (1)
const emitter = new EventEmmiter(); // (2)
class Logger extends EventEmitter {
log(text){
console.log(text);
this.emit('onXon', {arg: `the text is called`})
}
}
module.exports = Logger; // export class Logger
// index.js
const Logger = require('./logger'); // import object dari logger.js
const logger = new Logger();
logger.on('onXon', arg => {
console.log(arg);
});
logger.log('text dari method log yang diimport dari class Logger di logger.js');
// text dari method log yang diimport dari class Logger di logger.js
// {arg: "the text is called"}