Node.js - Trình phát sự kiện: Hướng dẫn cho người mới bắt đầu

Xin chào bạn, tương lai của ngôi sao lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của Node.js Event Emitters. Đừng lo nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ giải quyết chủ đề này từng bước một. Cuối cùng của bài hướng dẫn này, bạn sẽ có thể phát sự kiện như một chuyên gia!

Node.js - Event Emitter

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

Trước khi chúng ta nhảy vào mã, hãy hiểu Trình phát sự kiện là gì. Hãy tưởng tượng bạn đang ở một buổi tiệc (tất nhiên là buổi tiệc lập trình!). DJ là Trình phát sự kiện. Họ chơi nhạc (phát sự kiện), và khi họ chơi bài hát yêu thích của bạn, bạn bắt đầu nhảy (phản hồi với sự kiện). Trong Node.js, một Trình phát sự kiện giống như DJ đó - nó có thể gửi ra các tín hiệu mà các phần khác của chương trình của bạn có thể lắng nghe và phản ứng.

Bắt đầu với Trình phát sự kiện

Hãy bắt đầu với một ví dụ đơn giản để xem cách Trình phát sự kiện hoạt động trong Node.js.

const EventEmitter = require('events');

// Tạo một Trình phát sự kiện mới
const myEmitter = new EventEmitter();

// Định nghĩa một người lắng nghe sự kiện
myEmitter.on('greet', () => {
console.log('Hello, World!');
});

// Phát sự kiện
myEmitter.emit('greet');

Hãy phân tích này:

  1. Chúng ta import module events, cung cấp cho chúng ta khả năng Trình phát sự kiện.
  2. Chúng ta tạo một đối tượng Trình phát sự kiện mới叫做 myEmitter.
  3. Chúng ta sử dụng phương thức on để thiết lập một người lắng nghe cho sự kiện 'greet'.
  4. Khi sự kiện 'greet' xảy ra, nó sẽ in "Hello, World!" ra console.
  5. Cuối cùng, chúng ta sử dụng phương thức emit để kích hoạt sự kiện 'greet'.

Khi bạn chạy đoạn mã này, bạn sẽ thấy "Hello, World!" được in ra trong console. Đó giống như DJ của chúng ta vừa chơi bài hát yêu thích của bạn!

Thêm tham số vào sự kiện

Sự kiện cũng có thể mang theo dữ liệu. Hãy sửa đổi ví dụ của chúng ta để bao gồm một tên:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('greet', (name) => {
console.log(`Hello, ${name}!`);
});

myEmitter.emit('greet', 'Alice');
myEmitter.emit('greet', 'Bob');

Bây giờ, khi chúng ta phát sự kiện 'greet', chúng ta đang truyền một tên làm tham số. Người lắng nghe nhận tên này và sử dụng nó trong lời chào. Chạy đoạn mã này sẽ输出:

Hello, Alice!
Hello, Bob!

Đó giống như DJ của chúng ta bây giờ đang nhận yêu cầu bài hát với lời dedication!

Nhiều người lắng nghe

Một trong những điều thú vị về Trình phát sự kiện là bạn có thể có nhiều người lắng nghe cho cùng một sự kiện. Hãy nhìn thấy điều này trong hành động:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('party', () => {
console.log('Let\'s dance!');
});

myEmitter.on('party', () => {
console.log('Time for snacks!');
});

myEmitter.on('party', () => {
console.log('Taking selfies!');
});

myEmitter.emit('party');

Khi bạn chạy đoạn mã này, bạn sẽ thấy:

Let's dance!
Time for snacks!
Taking selfies!

Mỗi người lắng nghe phản ứng với sự kiện 'party' theo cách riêng của họ. Đó giống như những người khác nhau trong buổi tiệc lập trình của chúng ta phản ứng với cùng một bài hát theo phong cách riêng của họ!

Phương thức Once: Người lắng nghe một lần

Đôi khi, bạn muốn một người lắng nghe chỉ phản ứng một lần với sự kiện. Để làm điều này, chúng ta sử dụng phương thức once:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.once('special', () => {
console.log('This will only happen once!');
});

myEmitter.emit('special');
myEmitter.emit('special');
myEmitter.emit('special');

Đoạn mã này chỉ sẽ xuất "This will only happen once!" một lần, ngay cả khi chúng ta phát sự kiện ba lần. Đó giống như một ưu đãi một lần tại buổi tiệc lập trình của chúng ta - bạn.sleep, bạn.mất!

Sự kiện Lỗi

Xử lý lỗi là rất quan trọng trong lập trình. Trình phát sự kiện có một sự kiện đặc biệt 'error' để mục đích này:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('error', (err) => {
console.error('Whoops! There was an error:', err.message);
});

myEmitter.emit('error', new Error('Something went wrong!'));

Đoạn mã này thiết lập một người lắng nghe cho sự kiện 'error' và sau đó phát một lỗi. Output sẽ là:

Whoops! There was an error: Something went wrong!

Đó giống như có một lưới an toàn tại buổi tiệc lập trình của chúng ta - nếu điều gì đó xảy ra sai, chúng ta đã准备好 để xử lý nó!

Xóa người lắng nghe

Đôi khi, bạn có thể muốn ngừng lắng nghe một số sự kiện. Bạn có thể làm điều này với phương thức removeListener:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

function partyTime() {
console.log('Party time!');
}

myEmitter.on('celebrate', partyTime);

myEmitter.emit('celebrate');  // Xuất: Party time!

myEmitter.removeListener('celebrate', partyTime);

myEmitter.emit('celebrate');  // Không có output

Ở đây, chúng ta xóa người lắng nghe sau lần phát đầu tiên, vì vậy lần phát thứ hai không kích hoạt hàm. Đó giống như nói với DJ rằng bạn đang nghỉ nhảy!

Phương thức Trình phát sự kiện

Dưới đây là bảng các phương thức Trình phát sự kiện thường được sử dụng:

Phương thức Mô tả
on(eventName, listener) Thêm một hàm lắng nghe vào sự kiện đã cho
emit(eventName[, ...args]) Kích hoạt sự kiện đã cho
once(eventName, listener) Thêm một hàm lắng nghe một lần
removeListener(eventName, listener) Xóa một người lắng nghe cụ thể khỏi sự kiện
removeAllListeners([eventName]) Xóa tất cả người lắng nghe hoặc tất cả người lắng nghe của sự kiện cụ thể
listeners(eventName) Trả về một mảng các người lắng nghe cho sự kiện đã cho
listenerCount(eventName) Trả về số lượng người lắng nghe cho sự kiện cụ thể

Kết luận

Chúc mừng! Bạn đã chính thức bước vào thế giới của Node.js Event Emitters. Chúng ta đã bao gồm các khái niệm cơ bản, từ việc tạo ra các Trình phát sự kiện và người lắng nghe đến việc xử lý lỗi và xóa người lắng nghe. Trình phát sự kiện là một công cụ mạnh mẽ trong Node.js, cho phép bạn tạo ra các chương trình linh hoạt và phản hồi.

Nhớ rằng, thực hành làm nên hoàn hảo. Hãy thử tạo ra các Trình phát sự kiện của riêng bạn, thử nghiệm với các sự kiện và người lắng nghe khác nhau, và quan trọng nhất, hãy vui vẻ! Ai biết được, có lẽ bạn sẽ là DJ ngôi sao tại buổi tiệc lập trình tiếp theo, quay các sự kiện như một chuyên gia!

Chúc bạn vui vẻ lập trình, và hy vọng các sự kiện của bạn luôn tìm thấy người lắng nghe!

Credits: Image by storyset