Ví dụ EventEmitter Nodejs

NodeJS hỗ trợ các sự kiện trong ứng dụng rất hoàn hảo. Mỗi hành động trên máy tính là một sự kiện. Ví dụ, khi bạn đọc một tập tin trên ổ cứng. Có nghĩa là bạn phải thực hiện 2 thao tác "mở file" và "đóng file" sau khi đọc xong, nên ở đây chúng ta có 2 sự kiện "Open" & "Close". Dựa trên các sự kiện, bạn chèn mã của mình để làm điều gì đó


var fs = require('fs');

// Create a stream to read file
var rs = fs.createReadStream('C:/test/demo.txt');

// The event 'open':
rs.on('open', function() {
    console.log('File opened!');
});

Các sự kiện trong mô-đun cung cấp cho bạn một lớp EventEmitter, là lớp trung tâm trong NodeJS,  hỗ trợ xác định một sự kiện, đăng ký Người nghe của sự kiện này và phát ra (phát) sự kiện

Người nghe

Trong NodeJS, Listener là một hàm. Nó sẽ được gọi để thực thi khi một sự kiện xảy ra. Có thể 0, 1 hoặc nhiều Người nghe đang bị ràng buộc với sự kiện đó

Để đơn giản, hãy nhìn vào hình minh họa sau. một con chuột và một cái bẫy chuột. Một sự kiện chuẩn bị diễn ra. Khi sự kiện xảy ra (bánh bị cướp), bẫy chuột sẽ thực hiện nhiệm vụ của mình. Bẫy chuột ở đây là một "Listener", sẽ hoạt động khi sự kiện xảy ra

Ví dụ EventEmitter Nodejs

2- Ví dụ về EventEmitter

Nhập mô-đun Sự kiện và khai báo đối tượng EventEmitter ​​​​​​​


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


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

Đăng ký Listeners (Các hàm sẽ được gọi để thực thi khi có sự kiện xảy ra)


// Add Event Listener
eventEmitter.addListener('bellRing', bellRingHandler1);

// Add Event Listener
eventEmitter.addListener('bellRing', bellRingHandler2);

Phát sự kiện


// Fire bellRing event!!
eventEmitter.emit('bellRing', 'Jerry');

Ví dụ EventEmitter Nodejs

ví dụ đầu tiên. js


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


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

// A Listener
var bellRingHandler1 = function bellRingHandler1(who) {
   console.log("\n");
   console.log('The Bell Ringing.... (Handler 1)');

   console.log(" " + who + " was standing behind the door!");
   if(who == 'Jerry') {
       console.log(' Tom, help me!!');
       return;
   }
   console.log(" Welcome " + who);
}

// A Listener
var bellRingHandler2 = function bellRingHandler2(who) {
   console.log("\n");
   console.log('The Bell Ringing.... (Handler 2)');

   eventEmitter.emit("nobodyIsAtHome");
}

// A Listener
var nobodyIsAtHomeHandler = function nobodyIsAtHomeHandler()  {
   console.log("\n");
   console.log(" Sorry, Nobody is at home now, Please leave your message!")
}


// Add Event Listeners
eventEmitter.addListener('bellRing', bellRingHandler1);
eventEmitter.addListener('bellRing', bellRingHandler2);

eventEmitter.addListener('nobodyIsAtHome', nobodyIsAtHomeHandler);

// ----- Testing ------

// Fire bellRing event!!
eventEmitter.emit('bellRing', 'Jerry');

Chạy ví dụ



node eventemitter-examples/first-example.js

Ví dụ EventEmitter Nodejs

3- Lớp phát sự kiện

NoMethodDescrip1addListener(sự kiện, người nghe)

Thêm một người nghe vào cuối của mảng người nghe cho sự kiện đã chỉ định. Phương pháp này không kiểm tra xem người nghe này đã từng được thêm hay chưa.  

2on(sự kiện, người nghe)

Chính xác, phương thức này giống 100% với phương thức addListener

3once(sự kiện, người nghe)

Thêm một người nghe vào mảng người nghe của sự kiện đã chỉ định. Nhưng lister này chỉ được gọi một lần khi có sự kiện xảy ra. Sau đó, nó được xóa khỏi mảng

4removeListener(sự kiện, người nghe)

Xóa một người nghe khỏi mảng người nghe của sự kiện đã chỉ định. Nếu một người nghe đã được thêm vào mảng này nhiều lần. Để xóa hoàn toàn trình nghe này, bạn cần gọi phương thức này nhiều lần

5removeAllListeners([sự kiện])

Xóa tất cả người nghe hoặc xóa tất cả người nghe của một sự kiện được chỉ định

6setMaxListeners(n)

Theo mặc định, EventEmitters sẽ in cảnh báo nếu có hơn 10 người nghe đượ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. Bạn có thể đặt một số khác hoặc đặt thành 0 không giới hạn

7 người nghe(sự kiện)

Trả lại một mảng người nghe cho sự kiện đã chỉ định

8emit(sự kiện,
[arg1], [arg2], [. ])

Thực hiện lần lượt từng người nghe trong mảng, với các tham số. Trả về true nếu mảng có ít nhất một người nghe. Ngược lại, trả về false

Làm cách nào để sử dụng EventEmitter trong NodeJS?

js sử dụng mô-đun sự kiện để tạo và xử lý các sự kiện tùy chỉnh. Có thể sử dụng lớp EventEmitter để tạo và xử lý mô-đun sự kiện tùy chỉnh . Giá trị mặc định. false Nó tự động nắm bắt các từ chối. sự kiện lắng nghe. Trước khi phát ra bất kỳ sự kiện nào, nó phải đăng ký các chức năng (gọi lại) để lắng nghe các sự kiện.

Trình phát sự kiện trong nút JS là gì?

EventEmitter là mô-đun tạo điều kiện giao tiếp/tương tác giữa các đối tượng trong Nút . EventEmitter là cốt lõi của kiến ​​trúc hướng sự kiện không đồng bộ Node. Nhiều mô-đun tích hợp của Node kế thừa từ EventEmitter bao gồm các khung nổi bật như Express. js.

Khi nào tôi nên sử dụng EventEmitter?

Trình phát và trình nghe sự kiện rất quan trọng đối với sự phát triển của NodeJS và sự phát triển của nhiều ngôn ngữ lập trình khác. Chúng rất hữu ích khi bạn có một số chức năng cần thực thi “bất cứ khi nào điều này xảy ra”, mà không yêu cầu chức năng đó hoàn thành hoặc thậm chí hoạt động cho vấn đề đó.

Sự khác biệt giữa trình phát sự kiện và trình nghe sự kiện là gì?

trình phát sự kiện - mã tạo sự kiện - bạn viết mã để tạo sự kiện và sau đó bạn viết trình xử lý cho nó. trình lắng nghe sự kiện - sự kiện được tạo bởi trình duyệt, ví dụ - yêu cầu http, nhấp chuột- bạn viết mã để xử lý các sự kiện đó là trình lắng nghe