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
  1. Import class EventEmitter dari package 'events'
  2. Buat object baru dari class EventEmitter untuk digunakan
  3. Add event listener, so bila isyarat diberi, lakukan sesuatu
  4. 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"}