Node.js 事件發射器
如果您在瀏覽器中使用 JavaScript,您就會知道多少用戶互動是通過事件來處理的:滑鼠點擊、鍵盤按鍵按下、對滑鼠移動做出反應等等。
在後端方面,Node.js 提供了使用 events
模組 建立類似系統的選擇。
特別是這個模組提供了 EventEmitter
類別,我們將使用它來處理我們的事件。
您可以透過以下方式初始化它
const EventEmitter = require('node:events');
const eventEmitter = new EventEmitter();
這個物件除了許多其他方法之外,還公開了 on
和 emit
方法。
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()
: 刪除事件的所有監聽器
您可以在 官方文件 中更多了解這些方法。