Trong loạt bài viết Học Node.js trước đó, Mytour đã giới thiệu về khái niệm Event trong Node.js. Bài viết này sẽ tiếp tục giới thiệu về EventEmitter trong Node.js.
Khám phá chi tiết về khái niệm EventEmitter trong Node.js
EventEmitter trong Node.js là gì?
Nhiều đối tượng trong Node.js sẽ tạo ra sự kiện, ví dụ như net.Server phát sinh sự kiện mỗi khi có kết nối mới, hoặc fs.readStream kích hoạt sự kiện khi một file được mở. Tất cả các đối tượng tạo sự kiện này đều là biến thể của EventEmitter.
Như đã đề cập trước đó, lớp EventEmitter thuộc module event. Để truy cập lớp EventEmitter, bạn sử dụng đoạn mã sau đây:
// Nhập module sự kiện
EventEmitter cung cấp nhiều thuộc tính khác nhau như on và emit. Trong đó, thuộc tính on được sử dụng để liên kết với hàm sự kiện và thuộc tính emit được sử dụng để kích hoạt sự kiện.
Một minh họa về xử lý sự kiện trong Node.js
Dưới đây là một ví dụ về xử lý sự kiện trong Node.js:
Trong ví dụ trên, bước đầu tiên là nhập module sựkiện, sau đó tạo đối tượng từ lớp EventEmitter. Bước tiếp theo là xác định hàm bộ xử lý sự kiện bằng cách sử dụng hàm on(). Phương thức on() yêu cầu tên sự kiện để xử lý và hàm callback được gọi khi một sự kiện được kích hoạt.
Hàm kíchHoạt() sẽ tăng sự kiện được chỉ định. Tham số đầu tiên là tên của sự kiện dưới dạng chuỗi và tiếp theo là các đối số.
Một sự kiện có thể được phát sinh ngay cả khi đối số bằng 0 hoặc các giá trị khác. Bạn có thể chỉ định tên bất kỳ cho sự kiện tùy chỉnh trong hàm kíchHoạt ().
Ngoài ra, bạn cũng có thể sử dụng phương thức thêmNgườiNghe() để đăng ký một sự kiện như hình dưới đây:
Một minh họa về EventEmitter trong Node.js
Các phương thức của ĐốiTượngSựKiện trong Node.js
Dưới đây là bảng danh sách các phương thức quan trọng của lớp ĐốiTượngSựKiện trong Node.js:
Mô hình ĐốiTượngSựKiện phổ biến
2 mô hình phổ biến được sử dụng để nâng cao và liên kết các sự kiện bằng cách sử dụng lớp ĐốiTượngSựKiện trong Node.js:
1. Trả về ĐốiTượngSựKiện từ một hàm.
2. Mở rộng lớp ĐốiTượngSựKiện.
Trả về ĐốiTượngSựKiện từ một hàm
Trong mẫu mô hình này, hàm tạo trả về đối tượng ĐốiTượngSựKiện, được sử dụng để kích hoạt các sự kiện bên trong một hàm. Đối tượng ĐốiTượngSựKiện này có thể được sử dụng để đăng ký cho các sự kiện.
Để hình dung dễ dàng hơn, bạn xem ví dụ sau đây:
Kết quả đầu ra:
Trong hàm XửLýVòngLặp(), trước hết chúng ta sẽ tạo một đối tượng của lớp ĐốiTượngSựKiện, sau đó sử dụng nó để kích hoạt các sự kiện TrướcXửLý và SauXửLý. Cuối cùng, trả về một đối tượng ĐốiTượngSựKiện từ hàm.
Bây giờ chúng ta có thể sử dụng giá trị trả về của hàm XửLýVòngLặp để ràng buộc các sự kiện này bằng cách sử dụng hàm on () hoặc thêmNgườiNghe ().
Mở rộng lớp ĐốiTượngSựKiện
Trong mô hình này, chúng ta có thể mở rộng hàm tạo từ lớp ĐốiTượngSựKiện để kích hoạt các sự kiện.
Dưới đây là một ví dụ về việc mở rộng lớp ĐốiTượngSựKiện:
Kết quả đầu ra:
Trong ví dụ trước, mở rộng hàm tạo LoopProcessor với lớp ĐốiTượngSựKiện sử dụng phương thức util.inherits() từ module tiện ích. Do đó, chúng ta có thể sử dụng các phương thức của ĐốiTượngSựKiện với đối tượng LoopProcessor để xử lý sự kiện của nó.
Theo cách này, bạn có thể sử dụng lớp ĐốiTượngSựKiện để kích hoạt và xử lý các sự kiện tùy chỉnh trong Node.js.
Bài viết trên đây của Mytour giới thiệu về ĐốiTượngSựKiện trong Node.js làm thế nào? Ngoài ra, độc giả có thể tham khảo thêm các bài viết khác trên Mytour để hiểu cách triển khai và phát triển ứng dụng Node.js như thế nào nhé.