Nodejs有一個重要的事件模塊:EventEmitter。
它在Nodejs的內置及第三方模塊中被大量使用,許多Nodejs項目的架構都是用它實現的。
可見,EventEmitter對於學習NodeJS非常重要。
下面,我們通過常式來理解和掌握EventEmitter。
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
//觸發some_event事件
setTimeout(function() {
event.emit('some_event');
}, 1000);
//響應some_event事件
event.on('some_event', function() {
console.log('some_event 事件觸發');
});
這段代碼,先初始化一個EventEmitter的實例,然後一秒後,觸發一個事件,事件名稱是some_event,並且在這個事件的響應函數中輸出信息。
執行效果如圖所示:
EventEmitter 的每個事件由一個事件名和若干個參數組成,事件名是一個字元串,通常表達一定的語義。對於每個事件,EventEmitter 支持 若干個事件監聽器。
當事件觸發時,註冊到這個事件的事件監聽器被依次調用,事件參數作為回調函數參數傳遞,如下例:
執行效果:
以上例子中,emitter 為事件 someEvent 註冊了兩個事件監聽器,然後觸發了 someEvent 事件。
運行結果中可以看到兩個事件監聽器回調函數被先後調用。 這就是EventEmitter最簡單的用法。
如果你之前接觸過NodeJS,是不是會有熟悉的感覺?比如Express中,常見的connection方法。就是用這種方式構建的。
更多本系列文章: