EventEmitter nodejs

ghi chú của biên tập viên. Bài đăng này đã được cập nhật vào ngày 13 tháng 9 năm 2022 để bao gồm thông tin về lý do tại sao một người nên sử dụng trình phát sự kiện, các thành viên của lớp trong

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6 và thực hiện các cập nhật chung khác cho văn bản

Show

Sự kiện là hành động có ý nghĩa phần mềm hoặc phần cứng. Chúng được phát ra do hoạt động của người dùng, chẳng hạn như nhấp chuột hoặc nhấn phím hoặc trực tiếp từ hệ thống, chẳng hạn như lỗi hoặc thông báo

Ngôn ngữ JavaScript cho phép chúng tôi phản hồi các sự kiện bằng cách chạy mã trong trình xử lý sự kiện. Kể từNode. js dựa trên JavaScript, nó tận dụng tính năng này trong kiến ​​trúc hướng sự kiện của nó

Trong bài viết này, chúng ta sẽ thảo luận về trình phát sự kiện là gì và tại sao chúng ta nên sử dụng chúng, cũng như cách xây dựng trình phát sự kiện tùy chỉnh. Bắt đầu nào

  • Sự kiện hệ thống so với. sự kiện tùy chỉnh
    • 1. sự kiện hệ thống
    • 2. sự kiện tùy chỉnh
  • Trình phát sự kiện là gì?
  • Tại sao sử dụng trình phát sự kiện?
  • Các thành viên trong lớp trong
    const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    6
  • Mẫu chung cho bộ phát sự kiện tùy chỉnh
  • Xây dựng trình phát sự kiện tùy chỉnh trong Node. js
    • Tạo hàm tạo hàm phát sự kiện
    • Thêm các phương thức vào nguyên mẫu bộ phát sự kiện
  • Thêm nhiều phương thức sự kiện
    • Phương pháp
      const GreetHandlers = [
        ()=> {console.log("Hello world!"), 
        ()=> {console.log("Hello Developer!"), 
        ()=> {console.log("Hello From LogRocket!"}
      ];
      
      const events = {
        "greet": GreetHandlers
      }
      
      8
    • Phương pháp
      const GreetHandlers = [
        ()=> {console.log("Hello world!"), 
        ()=> {console.log("Hello Developer!"), 
        ()=> {console.log("Hello From LogRocket!"}
      ];
      
      const events = {
        "greet": GreetHandlers
      }
      
      9

Sự kiện hệ thống so với. sự kiện tùy chỉnh

Sự kiện trong nút. js là các hành động xảy ra trong ứng dụng của chúng tôi mà chúng tôi có thể phản hồi. Có hai loại sự kiện khác nhau trong Node. js, chúng tôi sẽ đề cập đến cả hai trong bài viết này

1. sự kiện hệ thống

Sự kiện hệ thống xảy ra từ phía C++ của Nút. js và được xử lý bởi thư viện C được sử dụng trong Node. js được gọi là libuv

Thư viện libuv xử lý các sự kiện cấp thấp hơn đang diễn ra bên trong hệ thống máy tính, về cơ bản là các sự kiện cấp thấp đến từ HĐH, chẳng hạn như nhận dữ liệu từ internet, đọc xong một tệp, v.v.

Bởi vì luồng của một nút. js được xác định bởi các sự kiện (lập trình hướng sự kiện), tất cả các yêu cầu I/O cuối cùng sẽ tạo ra một sự kiện hoàn thành/thất bại

ghi chú bên. JavaScript không có khả năng tích hợp sẵn để xử lý các sự kiện hệ thống

2. sự kiện tùy chỉnh

Các sự kiện tùy chỉnh xảy ra bên trong lõi JavaScript trong Nút. js. Những sự kiện này được xử lý bởi một Node. lớp js được gọi là

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6 là một lớp JavaScript trong Node. js được triển khai để xử lý các sự kiện tùy chỉnh vì JavaScript không có bất kỳ khả năng tích hợp nào để xử lý các sự kiện theo cách khác

Thông thường, khi một sự kiện xảy ra trong libuv, libuv sẽ tạo các sự kiện JavaScript tùy chỉnh để có thể dễ dàng xử lý chúng. Do đó, nút. js có thể được coi là một thực thể duy nhất mặc dù chúng thực sự là hai loại sự kiện khác nhau

Trong bài viết này, chúng tôi sẽ tập trung vào các sự kiện JavaScript tùy chỉnh và trình phát sự kiện


EventEmitter nodejs
EventEmitter nodejs

Hơn 200 nghìn nhà phát triển sử dụng LogRocket để tạo ra trải nghiệm kỹ thuật số tốt hơn

EventEmitter nodejs
EventEmitter nodejs
Tìm hiểu thêm →


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

Nút. js sử dụng mẫu lập trình hướng sự kiện như đã lưu ý ở trên. Mẫu thiết kế này dành cho việc tạo và sử dụng các sự kiện và chủ yếu được sử dụng ở giao diện người dùng (trình duyệt). Các hành động của người dùng như nhấp vào nút hoặc nhấn phím tạo ra một sự kiện

Các sự kiện này có các chức năng liên quan được gọi là trình nghe, được gọi để xử lý các sự kiện tương ứng của chúng khi chúng được phát ra

Mẫu hướng sự kiện có hai thành phần chính

  1. Trình xử lý sự kiện (người nghe). Đây là chức năng sẽ được gọi khi sự kiện được phát ra. Nhiều người nghe có thể đang lắng nghe một sự kiện. Khi sự kiện được phát ra, những người nghe này sẽ được gọi đồng bộ
  2. Một vòng lặp chính lắng nghe các sự kiện và gọi những người nghe liên quan để xử lý sự kiện đó

Nút. js đưa lập trình hướng sự kiện vào phần phụ trợ thông qua lớp

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
2. Lớp
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6 là một phần của nút lõi
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4. mô-đun js. Nó cung cấp một cách để chúng ta phát ra và xử lý các sự kiện, đồng thời nó đưa ra — trong số nhiều thứ khác — các phương thức
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5 và
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
6

Trong bài viết này, chúng ta sẽ xây dựng trình phát sự kiện tùy chỉnh bằng cách sử dụng các nguyên tắc cốt lõi cung cấp năng lượng cho Node. js để chúng ta có thể hiểu rõ hơn về cách chúng hoạt động

Đoạn mã dưới đây cho biết cách phát ra và xử lý một sự kiện bằng cách sử dụng đối tượng

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
2

Trong đoạn mã trên, phương thức

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
8 được sử dụng để đăng ký các trình lắng nghe xử lý một sự kiện, trong khi phương thức
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
9 được sử dụng để phát ra các sự kiện

Bằng cách phát ra sự kiện

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
50 ở trên, chức năng lắng nghe sự kiện
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
50 được gọi và
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
52 được ghi vào bảng điều khiển

Các phương thức khác được hiển thị bởi các đối tượng

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6 là

  1. const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    54. Điều này thêm một người nghe một lần
  2. const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    55. Đây là bí danh của
    const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    56. Nó xóa một trình lắng nghe sự kiện khỏi một sự kiện
  3. const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    57. Điều này trả về số lượng người nghe đang nghe một sự kiện

trong nút. js, có những đối tượng khác có thể phát ra sự kiện. Tuy nhiên, tất cả các đối tượng phát ra sự kiện đều là một thể hiện của lớp

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6. Để hiểu rõ nhất về các bộ phát sự kiện, hãy xây dựng bộ phát sự kiện của riêng chúng ta


Các bài viết hay khác từ LogRocket

  • Đừng bỏ lỡ một khoảnh khắc nào với The Replay, một bản tin được tuyển chọn từ LogRocket
  • Tìm hiểu cách Galileo của LogRocket loại bỏ tiếng ồn để chủ động giải quyết các sự cố trong ứng dụng của bạn
  • Sử dụng useEffect của React để tối ưu hóa hiệu suất ứng dụng của bạn
  • Chuyển đổi giữa nhiều phiên bản của Node
  • Khám phá cách tạo hoạt ảnh cho ứng dụng React của bạn với AnimXYZ
  • Khám phá Tauri, một khuôn khổ mới để xây dựng các tệp nhị phân
  • So sánh NestJS với. Thể hiện. js

Tại sao sử dụng trình phát sự kiện?

Nút. js đưa lập trình hướng sự kiện vào phần phụ trợ thông qua lớp

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6. Lớp
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6 là một phần của nút lõi
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4. mô-đun js

Trình phát và trình nghe sự kiện rất quan trọng đối với Node. phát triển js. Họ kích hoạt Nút. js để hoàn thành tính năng I/O đơn luồng, không đồng bộ, không chặn, vốn là mấu chốt của Node. hiệu suất tuyệt vời của js

Các thành viên trong lớp trong const GreetHandlers = [ ()=> {console.log("Hello world!"), ()=> {console.log("Hello Developer!"), ()=> {console.log("Hello From LogRocket!"} ]; const events = { "greet": GreetHandlers } 6

nút. js lớp

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6 cung cấp một cách để chúng tôi phát ra và xử lý các sự kiện. Trong đó, nó hiển thị nhiều thành viên lớp

  • Phương thức
    GreetHandlers.forEach(listener => {
     listener();
    });
    
    // Output:
    // "Hello world!"
    // "Hello Developer!"
    // "Hello From LogRocket!"
    
    6 gọi một cách tuần tự và đồng bộ từng người nghe đang lắng nghe sự kiện đã kích hoạt - truyền đối số được cung cấp cho từng người nghe
  • Phương thức
    GreetHandlers.forEach(listener => {
     listener();
    });
    
    // Output:
    // "Hello world!"
    // "Hello Developer!"
    // "Hello From LogRocket!"
    
    5 nhận hai đối số. tên sự kiện và một người nghe sự kiện. Nó thêm chức năng nghe sự kiện này vào cuối mảng người nghe
  • const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    16 là bí danh của
    const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    17
  • Phương thức
    const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    18 có hai đối số. tên sự kiện và một người nghe sự kiện. Sau đó, nó loại bỏ trình lắng nghe sự kiện này khỏi mảng sự kiện khi sự kiện được chỉ định kích hoạt
  • const GreetHandlers = [
      ()=> {console.log("Hello world!"), 
      ()=> {console.log("Hello Developer!"), 
      ()=> {console.log("Hello From LogRocket!"}
    ];
    
    const events = {
      "greet": GreetHandlers
    }
    
    8 là bí danh của phương thức
    GreetHandlers.forEach(listener => {
     listener();
    });
    
    // Output:
    // "Hello world!"
    // "Hello Developer!"
    // "Hello From LogRocket!"
    
    5

Mẫu chung cho bộ phát sự kiện tùy chỉnh

Ý tưởng chung của trình phát sự kiện là có một đối tượng sự kiện có các khóa đóng vai trò là sự kiện tùy chỉnh và các giá trị tương ứng sẽ là mảng trình nghe được gọi đồng bộ khi sự kiện được phát ra

Hãy xem xét mã dưới đây

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}

Ở đây, đối tượng

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4 có một thuộc tính.
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
82. Mỗi tên thuộc tính của đối tượng này được coi là một sự kiện duy nhất, nghĩa là thuộc tính
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
82 là một sự kiện

Giá trị của thuộc tính

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
82 (sự kiện) là mảng
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
85. Đây là một mảng chứa các hàm (hoặc trình nghe) sẽ được gọi đồng bộ khi sự kiện
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
82 xảy ra

Để gọi các hàm này một cách đồng bộ, chúng ta lặp qua mảng và gọi từng hàm, như bên dưới

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"

Ví dụ của chúng tôi ở trên cung cấp tổng quan đơn giản hóa về mẫu được sử dụng trong Nút. trình phát sự kiện js. Chúng tôi sẽ sử dụng cùng một mẫu khi chúng tôi xây dựng trình phát sự kiện của riêng mình trong phần tiếp theo

Xây dựng trình phát sự kiện tùy chỉnh trong Node. js

Mặc dù nút. js

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6 là một lớp JavaScript, chúng tôi sẽ xây dựng lớp của riêng mình bằng cách sử dụng một hàm tạo để chúng tôi có thể hiểu điều gì đang xảy ra trong nền

Các lớp trong JavaScript cung cấp cho chúng ta một cú pháp mới và dễ dàng để làm việc với sự kế thừa nguyên mẫu của JavaScript. Bởi vì các lớp trong JavaScript là đường cú pháp cho mẫu nguyên mẫu, nhiều thứ xảy ra dưới vỏ bọc bị ẩn khỏi chúng ta

Để xây dựng trình phát sự kiện tùy chỉnh của chúng tôi, hãy làm theo các bước bên dưới

1. Tạo hàm tạo hàm phát sự kiện

Cái này phải có một thuộc tính (đối tượng sự kiện)

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
5

Đối tượng

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4 ở trên sẽ đóng vai trò là đối tượng chính chứa tất cả các sự kiện tùy chỉnh. Mỗi
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
89 và
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
80 của đối tượng này tương ứng với một sự kiện và mảng người nghe của nó

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
1

2. Thêm các phương thức vào nguyên mẫu bộ phát sự kiện

JavaScript hướng đối tượng cung cấp cho chúng tôi một cách rõ ràng để chia sẻ các thuộc tính và phương thức trên ứng dụng của chúng tôi. Điều này là do mẫu nguyên mẫu cho phép các đối tượng truy cập các thuộc tính trong chuỗi nguyên mẫu, nghĩa là một đối tượng có thể truy cập các thuộc tính trong nguyên mẫu của nó, trong nguyên mẫu của nguyên mẫu và hơn thế nữa

Đầu tiên, công cụ JavaScript tìm kiếm một phương thức hoặc thuộc tính trong nguyên mẫu của một đối tượng nếu nó không có trong đối tượng. Nếu nó không tìm thấy nó trong nguyên mẫu của đối tượng đó, nó sẽ tiếp tục tìm kiếm xuống chuỗi nguyên mẫu. Kiểu thừa kế này được gọi là thừa kế nguyên mẫu

Do tính kế thừa nguyên mẫu của JavaScript, khi chúng ta thêm các thuộc tính và phương thức vào nguyên mẫu của đối tượng, tất cả các phiên bản của đối tượng đó sẽ có quyền truy cập vào chúng

Xem ở đây trong mã bên dưới, nơi chúng tôi thêm phương thức

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
8

Điều này thêm hàm

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5 vào nguyên mẫu của đối tượng
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
83, cho phép tất cả các phiên bản của đối tượng
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
83 kế thừa phương thức này. Phương thức
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5 nhận hai đối số, cụ thể là
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
86 và
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
87 (một hàm)

Đầu tiên, phương thức

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5 kiểm tra xem
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
87 có phải là một hàm không. Nếu không, nó sẽ báo lỗi như bên dưới

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
8

Ngoài ra, phương thức

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5 kiểm tra xem sự kiện
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
86 có trong đối tượng
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4 hay không (dưới dạng khóa). Nếu không có, nó sẽ thêm một sự kiện (dưới dạng khóa) vào đối tượng
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4 và đặt giá trị của nó thành một mảng trống. Cuối cùng, nó thêm người nghe vào mảng sự kiện tương ứng.
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
54

Bây giờ hãy thêm phương thức

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
6

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5

Đoạn mã trên thêm phương thức

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
6 vào nguyên mẫu
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
57. Nó chỉ đơn giản là kiểm tra xem loại sự kiện có tồn tại (dưới dạng khóa) trong đối tượng
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4 hay không. Nếu nó hiện diện, thì nó sẽ gọi tất cả những người nghe tương ứng như đã thảo luận ở trên

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
59 trả về giá trị của thuộc tính sự kiện tương ứng, là một mảng chứa các trình nghe

Do đó, mã bên dưới lặp qua mảng và gọi tất cả các trình nghe của nó một cách đồng bộ

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
2

Để sử dụng trình phát sự kiện của chúng tôi, chúng tôi sẽ phải phát một sự kiện theo cách thủ công

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
3

Trong đoạn mã trên, trước tiên chúng tôi yêu cầu và tạo một phiên bản của mô-đun

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
83 bằng cách sử dụng

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
0

Sau đó, chúng tôi chỉ định người nghe cho sự kiện

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
82 bằng phương pháp
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
1

Cuối cùng, chúng tôi phát thủ công sự kiện

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
50 bằng cách sử dụng dòng này

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
2

EventEmitter nodejs
EventEmitter nodejs

Hình ảnh trên cho thấy kết quả chạy mã của chúng tôi. Xem mã đầy đủ trong hộp cát tại đây

Thêm nhiều phương thức sự kiện

Phương pháp const GreetHandlers = [ ()=> {console.log("Hello world!"), ()=> {console.log("Hello Developer!"), ()=> {console.log("Hello From LogRocket!"} ]; const events = { "greet": GreetHandlers } 8

Điều quan trọng cần lưu ý là phương thức

GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5 thực sự là bí danh cho phương thức
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
8 trong bộ phát sự kiện. Vì vậy, chúng ta cần cấu trúc lại việc thực hiện

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
3

Đoạn mã trên vẫn hoạt động, nhưng trong phiên bản này, cả phương pháp

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
8 và phương pháp
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
5 đều làm điều tương tự

Phương pháp const GreetHandlers = [ ()=> {console.log("Hello world!"), ()=> {console.log("Hello Developer!"), ()=> {console.log("Hello From LogRocket!"} ]; const events = { "greet": GreetHandlers } 9

Ngoài ra còn có phương pháp

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
9. Điều này trả về tổng số chức năng (người nghe) đang lắng nghe một sự kiện cụ thể. Chúng tôi sẽ thực hiện điều này dưới đây

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
4

Ở đây, chúng tôi nói với cửa hàng đơn giản mảng người nghe cho sự kiện đã chỉ định cho biến

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
31 bằng cách sử dụng

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
5

Nếu không tìm thấy sự kiện, một mảng trống sẽ được lưu trữ. Sau đó, chúng tôi trả về

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
32 của
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
33

Bộ phát sự kiện trong Node. js cũng theo ý tưởng này, nhưng chúng có rất nhiều tính năng bổ sung. Chúng tôi chỉ xây dựng một phiên bản đơn giản. Bạn có thể chơi với mã cuối cùng bằng JavaScript đơn giản tại đây

Phần kết luận

Trình phát sự kiện là một khối xây dựng cơ bản của nhiều phần của Nút. lõi JavaScript js. Tất cả nút. js phát ra các sự kiện, chẳng hạn như luồng và mô-đun HTTP, là các thể hiện của lớp

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6. Nó là một đối tượng quan trọng trong Node. js được xác định và hiển thị bởi mô-đun
GreetHandlers.forEach(listener => {
 listener();
});

// Output:
// "Hello world!"
// "Hello Developer!"
// "Hello From LogRocket!"
4

Thông qua lớp

const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6, Node. js mang lập trình hướng sự kiện đến phía máy chủ. Tôi hy vọng bằng cách xây dựng trình phát sự kiện giả định của chúng tôi, bạn có thể tìm hiểu thêm về Nút. js lớp
const GreetHandlers = [
  ()=> {console.log("Hello world!"), 
  ()=> {console.log("Hello Developer!"), 
  ()=> {console.log("Hello From LogRocket!"}
];

const events = {
  "greet": GreetHandlers
}
6

Chỉ dành cho 200 Theo dõi các yêu cầu mạng chậm và không thành công trong sản xuất

Triển khai trang web hoặc ứng dụng web dựa trên Node là phần dễ dàng. Đảm bảo phiên bản Node của bạn tiếp tục cung cấp tài nguyên cho ứng dụng của bạn là lúc mọi thứ trở nên khó khăn hơn. Nếu bạn quan tâm đến việc đảm bảo các yêu cầu đối với dịch vụ phụ trợ hoặc bên thứ ba thành công, hãy thử LogRocket.
EventEmitter nodejs
EventEmitter nodejs
https. // tên lửa. com/đăng ký/

LogRocket giống như một DVR dành cho ứng dụng web và thiết bị di động, ghi lại mọi thứ diễn ra trong khi người dùng tương tác với ứng dụng của bạn theo đúng nghĩa đen. Thay vì đoán xem tại sao lại xảy ra sự cố, bạn có thể tổng hợp và báo cáo về các yêu cầu mạng có vấn đề để nhanh chóng hiểu nguyên nhân gốc rễ

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

Nút. 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 .

Làm cách nào để sử dụng trình phát sự kiện NodeJS?

Để tạo trình phát sự kiện, chúng ta cần tạo phiên bản của trình phát sự kiện từ mô-đun sự kiện trong NodeJS . Ghi chú. Tôi đang sử dụng Bản mô tả thay vì JavaScript. nhập { EventEmitter } từ 'sự kiện'; const eventEmitter = new EventEmitter(); .

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 quá trình phát triển NodeJS và phát triển nhiều ngôn ngữ lập trình khác. Chúng rất hữu ích khi bạn có một chức năng nào đó 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 đề đó .

Làm cách nào để sử dụng trình phát sự kiện trong JavaScript?

Sau đó, chúng tôi chỉ định hàm 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 của sự kiện cần xử lý và hàm gọi lại được gọi khi một sự kiện được phát sinh. Hàm phát ra() tăng sự kiện đã chỉ định . Tham số đầu tiên là tên của sự kiện dưới dạng chuỗi và sau đó là đối số.