VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

Học Node.js

Node.js là gì? Cài đặt Node.js Giới thiệu qua về Module Ứng dụng Hello World REPL Terminal Node.js NPM Callback trong Node.js Event Loop trong Node.js Lớp EventEmitter Khái niệm Buffer Khái niệm Stream Đọc/Ghi File Các đối tượng Global Đối tượng Console Đối tượng Process Giới thiệu Express Framework RESTFul API là gì? Một số Utility Module Web Module OS Module path Module net Module dns Module domain Module
1 / 3
❮ ❯

Lớp Event Emitter trong Node.js


Event Loop trong Node.js
Buffer trong Node.js

Nhiều đối tượng trong Node.js sinh ra các sự kiện, ví dụ net.Server sinh ra một sự kiện mỗi khi có một kết nối ngang hàng đến nó, hay fs.readStream sinh ra sự kiện khi một file được mở. Tất cả các đối tượng này đều là sự thể hiện của lớp EventEmitter trong Node.js.


Nội dung chính

  • Lớp EventEmitter trong Node.js
  • Các phương thức của lớp EventEmitter trong Node.js
  • Các sự kiện của lớp EventEmitter trong Node.js
  • Ví dụ về lớp EventEmitter trong Node.js

Lớp EventEmitter trong Node.js

Lớp events.EventEmitter nằm trong events Module. Lớp này được truy cập qua cú pháp sau:


// Khai bao events Module
var events = require('events');
// Tao mot doi tuong eventEmitter
var eventEmitter = new events.EventEmitter();

Khi một EventEmitter gặp bất kì lỗi nào, nó sẽ sinh ra một Error Event. Khi một Listener mới được thêm, sự kiện 'newListener' sẽ được kích hoạt và một Listener sẽ bị loại bỏ, sự kiện 'removeListener' sẽ được kích hoạt.

Event Emitter cung cấp nhiều thuộc tính như on hay emit. Thuộc tính on được sử dụng để gắn kết một hàm với sự kiện, và emit dược sử dụng để kích hoạt một sự kiện.


Các phương thức của lớp EventEmitter trong Node.js

SttPhương thức & Mô tả
1addListener(event, listener)
Thêm một Listener vào phần cuối của mảng các Listener cho một sự kiện cụ thể
2on(event, listener)
Thêm một Listener vào phần cuối của mảng các Listener cho một sự kiện cụ thể
3once(event, listener)
Thêm một One-Time Listener cho sự kiện. Listener dạng này sẽ chỉ được gọi khi sự kiện được kích hoạt, sau đó nó sẽ bị xóa
4removeListener(event, listener)
Xóa một Listener ra khỏi mảng các Listener cho một sự kiện nào đó.
5removeAllListeners([event])
Xóa tất cả Listener của một sự kiện
6setMaxListeners(n)
Theo mặc định, lớp EventEmitters sẽ in một lời cảnh báo nếu bạn thêm nhiều hơn 10 Listener cho một sự kiện cụ thể. Việc này khá hữu ích, bởi vì nó sẽ giúp tìm ra các lỗi gây rò rỉ bộ nhớ. Tất nhiên, không phải tất cả các Emitters đều cần được giới hạn với con số là 10. Hàm này cho phép bạn tăng con số đó. Thiết lập nó về 0 để không giới hạn lượng Listener cần thêm
7listeners(event)
Trả về một mảng bao gồm các Listener cho một sự kiện cụ thể nào đó
8emit(event, [arg1], [arg2], [...])
Thực thi từng Listener với các tham số đã cho. Trả về true nếu sự kiện có các Listener, và false nếu không có

Các sự kiện của lớp EventEmitter trong Node.js

SttSự kiện & Mô tả
1newListener
  • event - Dạng chuỗi, biểu diễn tên sự kiện

  • listener - Tên hàm xử lý sự kiện

Sự kiện này được sinh bất cứ khi nào bạn thêm một Listener. Khi sự kiện này được kích hoạt, Listener có thể sẽ chưa được thêm vào mảng Listener của sự kiện

2removeListener
  • event - Dạng chuỗi, biểu diễn tên sự kiện

  • listener - Tên hàm xử lý sự kiện

Sự kiện này xảy ra bất cứ khi nào có ai đó xóa một Listener. Khi một sự kiện được kích hoạt, Listener này chưa được xóa khỏi mảng Listener của sự kiện


Ví dụ về lớp EventEmitter trong Node.js

Tạo một file js với tên là emitter1.js với nội dụng Node.js như dưới đây. Trong emitter1.js, đầu tiên bạn khai báo Module events. Tiếp đó, bạn sử dụng phương thức addListener() để thêm một Listener cho một sự kiện nào đó, và sử dụng các thuộc tính on và emit để thực hiện các tính năng đã trình bày ở trên.


var events = require('events');
var eventEmitter = new events.EventEmitter();

// listener #1
var listner1 = function listner1() {
   console.log('listener1 duoc thuc thi.');
}// listener #2
var listner2 = function listner2() {
  console.log('listener2 duoc thuc thi.');
}

// Gan su kien connection voi ham listner1
eventEmitter.addListener('connection', listner1);
// Gan su kien connection voi ham listner2
eventEmitter.on('connection', listner2);
var eventListeners = require('events')
        .EventEmitter.listenerCount(eventEmitter, 'connection');
console.log(eventListeners 
        + " Event Listner dang lang nghe su kien connection");

// Xoa su kien connection 
eventEmitter.emit('connection');
// Xóa bỏ ràng buộc của hàm listner1
eventEmitter.removeListener('connection', listner1);
console.log("Bay gio, Listner1 se khong lang nghe.");
// Xoa su kien connection 
eventEmitter.emit('connection');
eventListeners = require('events')
        .EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners 
        + " Event Listner dang lang nghe su kien connection");
console.log("Ket thuc chuong trinh.");

Chạy emitter1.js để xem kết quả:


> node emitter1.js

Kết quả:

Lớp Event Emitter trong Node.js
Event Loop trong Node.js
Buffer trong Node.js

Recent Updates

Domain Module trong Node.jsDNS Module trong Node.jsNet Module trong Node.jsPath Module trong Node.jsOS Module trong Node.jsWeb Module trong Node.jsUtility Module trong Node.jsRestFul API trong Node.jsExpress Framework trong Node.jsĐối tượng Process trong Node.jsĐối tượng Console trong Node.jsĐối tượng Global trong Node.jsSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml