在 Node.js 中,事件派發器用于實現異步事件的發布和訂閱。Node.js 的核心模塊 `events` 提供了一個 `EventEmitter` 類,用于創建和管理事件。
比如:
首先,需要引入 `events` 模塊并創建一個 `EventEmitter` 實例:
```javascript
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
```
然后,可以通過 `on` 方法來注冊事件監聽器(訂閱事件):
```javascript
eventEmitter.on('eventName', (arg1, arg2) => {
// 處理事件邏輯
});
```
其中,`eventName` 是事件名稱,`(arg1, arg2)` 是當事件觸發時傳遞給監聽器的參數。
接下來,可以使用 `emit` 方法來觸發事件(發布事件):
```javascript
eventEmitter.emit('eventName', arg1, arg2);
```
這樣就會觸發名為 `eventName` 的事件,并且將 `arg1` 和 `arg2` 作為參數傳遞給對應的事件監聽器。
事件監聽器可以根據需要注冊多個,它們會按照注冊的順序依次執行。
除了 `on` 和 `emit` 方法外,還有其他一些常用的方法,如:
- `once`: 注冊只觸發一次的事件監聽器。
- `removeListener`: 移除指定事件的監聽器。
- `removeAllListeners`: 移除所有事件的監聽器。
- `setMaxListeners`: 設置最大監聽器數量。
下面是一個完整的示例,演示了如何使用事件派發器進行異步事件的發布和訂閱:
```javascript
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
// 注冊事件監聽器
eventEmitter.on('myEvent', (arg1, arg2) => {
console.log('事件觸發:', arg1, arg2);
});
// 觸發事件
eventEmitter.emit('myEvent', '參數1', '參數2');
```
當運行這段代碼時,會輸出事件觸發的信息。
我們可以根據具體的業務場景,靈活運用事件派發器來實現異步事件的處理和消息傳遞。