Xin chào các bạn! Mình lại dẫn người bạn Nodejs đến để giới thiệu với các bạn đây.

Lần này, chúng ta sẽ cùng tìm hiểu về một trong những đối tượng cơ bản trong thư viện Events là EventEmitter, của bạn Node.js nhé.


Hình: https://www.wikitechy.com/tutorials/node-js/node-js-event-emitter

Cơ chế hoạt động cơ bản của EventEmitter trong Nodejs có thể được thể hiện qua ví dụ sau:

Trước tiên, mình tạo file emitter.js như sau:


function Emitter() {
 this.events = {};
}
Emitter.prototype.on = function (type, listener) {
 this.events[type] = this.events[type] || [];
 this.events[type].push(listener);
};

Emitter.prototype.emit = function (type) {
 if (this.events[type]) {
  this.events[type].forEach(function(listener) {
   listener();
  });
 }
};

module.exports = Emitter;


Module Emitter gồm một literal object events để lưu giữ tất cả các sự kiện; 2 phương thức prototype là on và emit để có thể sử dụng khi kế thừa prototype. Phương thức on sẽ lưu giữ theo từng kiểu sự kiện, mỗi kiểu sự kiện có một mảng các sự kiện khác nhau và các listener của mỗi kiểu sự kiện sẽ được lưu giữ trong mảng riêng của nó. Phương thức emit được dùng để kiểm tra xem trong object lưu giữ sự kiện đã có sự kiện đó chưa, nếu có sẽ thực hiện phát các listener trong sự kiện đó ra.