Home Uncategorized Node.js – Bài 6: Event Emitter

Node.js – Bài 6: Event Emitter

14 min read
0
209

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

Sự kiệnLớp Emitter

Như chúng ta đã thấy trong phần trước, lớp EventEmitter nằm trong module sự kiện. Nó có thể truy cập thông qua đoạn mã sau:

// Import events module
var events = require('events');

// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

Khi một phiên bản EventEmitter gặp bất kỳ lỗi nào, nó sẽ phát ra một sự kiện ‘lỗi’. Khi một listener mới được thêm vào, sự kiện ‘newListener’ sẽ được kích hoạt và khi một listener bị xóa, sự kiện ‘removeListener’ sẽ được kích hoạt.

EventEmitter cung cấp nhiều thuộc tính như bật và phát ra . thuộc tính on được sử dụng để liên kết một chức năng với sự kiện và phát ra được sử dụng để kích hoạt một sự kiện.

Method – Function

STT. Phương pháp & Mô tả
1 addListener(event, listener)

Thêm một listener vào cuối mảng cho sự kiện đã chỉ định. Không có kiểm tra nào được thực hiện để xem listener đã được thêm chưa. Nhiều cuộc gọi chuyển qua cùng một tổ hợp sự kiện và trình nghe sẽ dẫn đến việc trình nghe được thêm nhiều lần. Trả về bộ phát, vì vậy các cuộc gọi có thể được xâu chuỗi.

2 on(event, listener)

Thêm một listener vào cuối mảng cho sự kiện đã chỉ định. Không có kiểm tra nào được thực hiện để xem listener đã được thêm chưa. Nhiều cuộc gọi chuyển qua cùng một tổ hợp sự kiện và trình nghe sẽ dẫn đến việc trình nghe được thêm nhiều lần. Trả về bộ phát, vì vậy các cuộc gọi có thể được xâu chuỗi.

3 once(event, listener)

Thêm listener một lần vào sự kiện. Trình nghe này chỉ được gọi vào lần tiếp theo khi sự kiện được kích hoạt, sau đó nó sẽ bị xóa. Trả về bộ phát, vì vậy các cuộc gọi có thể được xâu chuỗi.

4 removeListener(event, listener)

Xóa một listener khỏi mảng cho sự kiện đã chỉ định. Thận trọng – Nó thay đổi các chỉ số mảng trong mảng trình nghe phía sau trình nghe. removeListener sẽ xóa tối đa một phiên bản của trình nghe khỏi mảng trình listener. Nếu bất kỳ trình nghe đơn lẻ nào đã được thêm nhiều lần vào mảng trình nghe cho sự kiện đã chỉ định, thì removeListener phải được gọi nhiều lần để xóa từng phiên bản. Trả về bộ phát, vì vậy các cuộc gọi có thể được xâu chuỗi.

5 removeAllListeners([event])

Xóa tất cả listener hoặc listener của sự kiện đã chỉ định. Không nên xóa các trình listener đã được thêm vào ở nơi khác trong mã, đặc biệt khi nó nằm trên trình phát mà bạn không tạo (ví dụ: ổ cắm hoặc luồng tệp). Trả về bộ phát, vì vậy các cuộc gọi có thể được xâu chuỗi.

6 setMaxListeners(n)

Theo mặc định, EventEmitters sẽ in cảnh báo nếu có hơn 10 listener được thêm vào một sự kiện cụ thể. Đây là một mặc định hữu ích giúp tìm rò rỉ bộ nhớ. Rõ ràng là không phải tất cả các Bộ phát nên được giới hạn ở 10. Chức năng này cho phép tăng số lượng đó lên. Đặt thành 0 cho không giới hạn.

7 listeners(event)

Trả về một mảng listener cho sự kiện đã chỉ định.

8 emit(event, [arg1], [arg2], […])

Thực hiện từng listeners theo thứ tự với các đối số được cung cấp. Trả về true nếu sự kiện có listener, ngược lại là false.

phương pháp lớp

STT. Phương pháp & Mô tả
1 listenerCount(emitter, event)

Trả về số lượng listener cho một sự kiện nhất định.

Sự kiện

STT. Sự kiện & Mô tả
1 newListener

  • event  – Chuỗi: tên sự kiện
  • listener  – Chức năng: chức năng xử lý sự kiện

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

2 removeListener

  • event  – Chuỗi Tên sự kiện
  • Listener − Function Hàm xử lý sự kiện

Sự kiện này được phát ra bất cứ khi nào ai đó xóa listener. Khi sự kiện này được kích hoạt, listener có thể chưa bị xóa khỏi mảng listener cho sự kiện.

Ví dụ

Tạo một tệp js có tên main.js với mã Node.js sau –

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

// listener #1
var listner1 = function listner1() {
   console.log('listner1 executed.');
}

// listener #2
var listner2 = function listner2() {
   console.log('listner2 executed.');
}

// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);

// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);

var eventListeners = require('events').EventEmitter.listenerCount
   (eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

// Fire the connection event 
eventEmitter.emit('connection');

// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");

// Fire the connection event 
eventEmitter.emit('connection');

eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

console.log("Program Ended.");

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác minh đầu ra.

2 Listner(s) listening to connection event
listner1 executed.
listner2 executed.
Listner1 will not listen now.
listner2 executed.
1 Listner(s) listening to connection event
Program Ended.
Load More Related Articles
Load More By quangvu
  • PHP – Bài 6: Các loại toán tử

    Toán tử là gì? Câu trả lời đơn giản có thể được đưa ra bằng biểu thức 4 + 5 bằng 9 . Ở đây…
  • Laravel – Bài 14: Query Builder

    Laravel đã cung cấp cho chúng ta một tính năng hữu ích – gọi là Query Builder. Trong bài c…
  • React Native – Bài 16 View

    View là thành phần phổ biến nhất trong React Native. Bạn có thể coi nó tương đương với phầ…
Load More In Uncategorized

Check Also

Tự làm web chatGPT đơn giản cho phép dùng nhiều OpenAI key

Trong thời đại công nghệ phát triển như hiện nay, chatbot đang dần trở thành một giải pháp…