Node.js 事件發射器

如果您在瀏覽器中使用 JavaScript,您就會知道多少用戶互動是通過事件來處理的:滑鼠點擊、鍵盤按鍵按下、對滑鼠移動做出反應等等。

在後端方面,Node.js 提供了使用 events 模組 建立類似系統的選擇。

特別是這個模組提供了 EventEmitter 類別,我們將使用它來處理我們的事件。

您可以透過以下方式初始化它

const EventEmitter = require('node:events');

const eventEmitter = new EventEmitter();

這個物件除了許多其他方法之外,還公開了 onemit 方法。

  • emit 用於觸發事件
  • on 用於添加一個在事件觸發時將要執行的回調函數

例如,讓我們創建一個 start 事件,並作為提供示例,我們只需將其記錄到控制台中以做出反應

eventEmitter.on('start', () => {
  console.log('started');
});

當我們執行時

eventEmitter.emit('start');

事件處理函數被觸發,我們得到了控制台日誌。

您可以通過將它們作為 emit() 的附加參數傳遞來將參數傳遞給事件處理程序

eventEmitter.on('start', number => {
  console.log(`started ${number}`);
});

eventEmitter.emit('start', 23);

多個參數

eventEmitter.on('start', (start, end) => {
  console.log(`started from ${start} to ${end}`);
});

eventEmitter.emit('start', 1, 100);

EventEmitter 物件還公開了幾個其他與事件交互的方法,如

  • once(): 添加一次性監聽器
  • removeListener() / off(): 從事件中刪除事件監聽器
  • removeAllListeners(): 刪除事件的所有監聽器

您可以在 官方文件 中更多了解這些方法。

閱讀時間
2 分鐘閱讀
貢獻
編輯此頁面