Node.js 事件發射器

如果您在瀏覽器中使用過 JavaScript,就會知道使用者的許多互動都是透過事件處理的:滑鼠點選、鍵盤按鍵按下、對滑鼠移動的反應等等。

在後端,Node.js 提供了使用 events 模組 構建類似系統的選項。

該模組特別提供了 EventEmitter 類,我們將用它來處理事件。

您可以使用以下程式碼進行初始化

const  = ('node:events');

const  = new ();

這個物件暴露了許多方法,其中包括 onemit

  • emit 用於觸發一個事件
  • on 用於新增一個回撥函式,該函式將在事件被觸發時執行

例如,讓我們建立一個 start 事件,並作為一個示例,我們透過列印到控制檯來對此作出反應

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

當我們執行時

eventEmitter.emit('start');

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

您可以透過將引數作為 emit() 的額外引數傳遞給事件處理程式

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

eventEmitter.emit('start', 23);

多個引數

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

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

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

  • once(): 新增一個一次性的監聽器
  • removeListener() / off(): 從事件中移除一個事件監聽器
  • removeAllListeners(): 移除一個事件的所有監聽器

您可以在官方文件中閱讀有關這些方法的更多資訊。

閱讀時間
1 分鐘
作者
貢獻
編輯此頁面