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.jsconst 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"}