Node.js實戰9:用EventEmitter觸發和響應事件

2019年12月08日16:45:12 科技 1674

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 事件觸發');
});

Node.js實戰9:用EventEmitter觸發和響應事件 - 天天要聞

這段代碼,先初始化一個EventEmitter的實例,然後一秒後,觸發一個事件,事件名稱是some_event,並且在這個事件的響應函數中輸出信息。

執行效果如圖所示:

Node.js實戰9:用EventEmitter觸發和響應事件 - 天天要聞

EventEmitter 的每個事件由一個事件名和若干個參數組成,事件名是一個字符串,通常表達一定的語義。對於每個事件,EventEmitter 支持 若干個事件監聽器。

當事件觸發時,註冊到這個事件的事件監聽器被依次調用,事件參數作為回調函數參數傳遞,如下例:

Node.js實戰9:用EventEmitter觸發和響應事件 - 天天要聞

執行效果:

Node.js實戰9:用EventEmitter觸發和響應事件 - 天天要聞

以上例子中,emitter 為事件 someEvent 註冊了兩個事件監聽器,然後觸發了 someEvent 事件。

運行結果中可以看到兩個事件監聽器回調函數被先後調用。 這就是EventEmitter最簡單的用法。

如果你之前接觸過NodeJS,是不是會有熟悉的感覺?比如Express中,常見的connection方法。就是用這種方式構建的。

更多本系列文章:

Node.js實戰8:可用於壓縮、加密的zlib

Node.js實戰7:你了解buffer嗎?

Node.js實戰6:定時器,使用timer延遲執行

科技分類資訊推薦

平板電腦+AI?榮耀平板MagicPad3的AI到底能做些什麼? - 天天要聞

平板電腦+AI?榮耀平板MagicPad3的AI到底能做些什麼?

在今年上半年的MWC2025上,榮耀正式公布了阿爾法戰略,宣布由手機製造商向AI終端生態公司所轉型,在今年,我們已經看到了很多榮耀新品搭載了其最新的AI技術如影像技術AiMAGE、移動AI智能體YOYO等。與此同時,在公布阿爾法戰略僅不到半年,榮耀正式更新了其旗艦平板電腦產品MagicPad3,並毫無例外的加入了諸多AI方面的功能,...
高效製作電子畫冊的優質軟件推薦 - 天天要聞

高效製作電子畫冊的優質軟件推薦

高效製作電子畫冊不僅能節省寶貴時間,還能提升作品的專業品質。作為設計師,我們需要依賴功能強大、操作便捷的工具來實現靈感的快速轉化。今天為大家推薦幾款在行業內口碑良好的電子畫冊製作軟件,幫助您事半功倍。1.
馬雲現身比利時大廣場低頭專註看手機:還帶了幾個保鏢 - 天天要聞

馬雲現身比利時大廣場低頭專註看手機:還帶了幾個保鏢

近日,有網友發帖稱在比利時布魯塞爾大廣場偶遇阿里巴巴創始人馬雲,並分享出幾張偶遇照片。網友爆料稱,馬雲還帶了幾個陪同保鏢。據拍攝者發佈圖片顯示,當天馬雲身着白襯衫,搭配同色系休閑褲,正坐在椅子上低頭看着手機,神情專註。近年來,「退居二線」的馬雲不斷在國外被網友偶遇,雖然他的生活方式變得如同「閑雲野鶴...
藍寶石推出 NiTRO+ 氮動 B850A / B650A WIFI 主板 - 天天要聞

藍寶石推出 NiTRO+ 氮動 B850A / B650A WIFI 主板

IT之家 7 月 4 日消息,藍寶石(藍寶科技)現已推出 NiTRO+ 氮動 B850A WIFI 和 NiTRO+ 氮動 B650A WIFI 兩款姊妹主板。這一對產品從介紹上來看沒有明顯功能差異,主要區別體現在左上方鋁製馬甲的裝飾風格上。藍寶石 NiTRO+ B850A / B650A WIFI 主板屬於標準 ATX 板型,採用氮動系列家族化極客設計語言
消息稱AMD Zen 6 架構引入多層 3D 堆疊緩存 - 天天要聞

消息稱AMD Zen 6 架構引入多層 3D 堆疊緩存

IT之家 7 月 4 日消息,消息源 Moore's Law Is Dead(MLID)在最新一期視頻中,曝料稱 AMD 將變革 Zen 6 架構,通過多層 3D 堆疊緩存,相比較 Zen 5 架構,FP IPC (浮點運算每時鐘指令數) 增幅可達到 6~8%。在 Zen 5 架構上,每個 3D V-Cache 層最高可以緩存 64MB,而在 Zen 6 架
格力朱磊:董明珠的影響力不來自於財富,來自於她所創造的財富 - 天天要聞

格力朱磊:董明珠的影響力不來自於財富,來自於她所創造的財富

IT之家 7 月 4 日消息,格力電器市場總監朱磊今日發佈微博稱,董明珠的影響力不來自於財富,來自於她所創造的財富。朱磊的微博配圖顯示:2012 年董明珠出任格力電器董事長至今格力電器累計納稅 1741.95 億元累計向股民分紅 1666.56 億元格力電器創造 48 項國際領先技術專利超 13 萬項發明專利授權量連續 8 年位列家電行業第...
開啟第四次OTA 超26項升級優化助豹8不斷進階 - 天天要聞

開啟第四次OTA 超26項升級優化助豹8不斷進階

6月30日,方程豹豹8迎來了第四次OTA升級,以16項新增功能、10項優化體驗,在智能駕駛、AI座艙、動態控制三大領域完成了一次有態度的進化。此次升級,讓豹8不僅擁有機械素質鑄就的力量感,還能讀懂生活的細節,讓智能不止於功能堆砌,更是想你所