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延遲執行

科技分類資訊推薦

15元可激光打標定製充電寶3C符號!律師:偽造認證標誌違法 - 天天要聞

15元可激光打標定製充電寶3C符號!律師:偽造認證標誌違法

新京報貝殼財經訊(記者俞金旻) 充電寶乘機「新規」一周,充電寶自棄量大幅下降,越來越多的旅客會選購符合乘機要求的充電寶,並在出門前仔細檢查。6月28日起,中國民航局禁止旅客攜帶沒有3C標識、3C標識不清晰、被召回型號或批次的充電寶乘坐境內航班。此前,貝殼財經記者曾報道,電商平台有商家售賣3C認證標籤貼紙,相關...
上海浦東機場宣布:正式啟用!13台睡眠艙來了,「可充電,有燈、小平板」,價格公布 - 天天要聞

上海浦東機場宣布:正式啟用!13台睡眠艙來了,「可充電,有燈、小平板」,價格公布

上海浦東機場T2航站樓有睡眠艙了7月4日,記者從睡眠艙運營商相關負責人處了解到,在浦東機場T2國際出發D65登機口處,首批13台睡眠艙已投入運營,目前24小時開放,艙內有新風系統,提供毯子,一客一清潔消毒。價格表顯示,休息半小時35元、一小時65元、1.5小時95元、2小時125元、3小時185元,滿360分鐘送120分鐘、也就...
標配智能電混四驅+激光雷達 領克10 EM-P正式發布 - 天天要聞

標配智能電混四驅+激光雷達 領克10 EM-P正式發布

【TechWeb】7月4日消息,領克品牌旗下首款中大型豪華運動轎車領克10 EM-P今日迎來首秀。新車標配四驅和激光雷達,同時搭載領克全新EM-P智能電混系統,將於下月開啟預售,並在第三季度內完成上市。外觀方面,新車採用了領克The Next Day設計語言,整體風格與領克Z10十分相似。車頭採用標誌性的分體式頭燈,下方配有貫穿式燈...
全球發明大會中國區上海開賽,超2000名學生參賽,宇樹機器人也穿上賽服 - 天天要聞

全球發明大會中國區上海開賽,超2000名學生參賽,宇樹機器人也穿上賽服

7月4日,2024-2025年度全球發明大會中國區(ICC)上海賽區在寶山區青少年活動中心開賽。宇樹科技機器人G1與2000多名來自長三角等地區的參賽青少年一樣,也穿上賽服躍躍欲試。它還和小發明家一起,與現場觀賽的中國科學院院士、上海技術物理研究所研究員、世界電磁波科學界最高獎得主沈學礎等握手相擁。沈學礎院士與小選手在...
朝陽前瞻布局元宇宙,未來顯示產業園等成果批量上新 - 天天要聞

朝陽前瞻布局元宇宙,未來顯示產業園等成果批量上新

元宇宙是北京市重點布局的未來產業之一。7月4日,作為全國規模最大、產業鏈生態最完整的元宇宙(互聯網3.0)生態發展集聚區,朝陽區舉辦2025全球數字經濟大會AIGC與元宇宙融合發展論壇。AIGC(人工智慧內容生成)工具平台、2025朝陽區元宇宙標杆示範應用場景、元宇宙應用場景示範基地、未來顯示產業園、ULive超現場播控中心...
虛假信息面前,AI為何「智商下線」? - 天天要聞

虛假信息面前,AI為何「智商下線」?

□曹欣怡(雲南財經大學)7月4日,「DeepSeek給王一博道歉是假的」衝上微博熱搜。據稱,這家人工智慧公司因內容審核疏漏,將王一博與「李愛慶腐敗案」不當關聯,損害了其名譽,並已作出正式道歉。
無3C標識充電寶「禁飛」首周:民航與鐵路安檢標準不一 - 天天要聞

無3C標識充電寶「禁飛」首周:民航與鐵路安檢標準不一

自6月28日起,民航局禁止旅客攜帶無3C標識及被召回的充電寶乘坐境內航班,另一方面,鐵路部門並不查驗充電寶3C認證標識或品牌。針對充電寶「禁飛」一周來的落實情況,記者進行了走訪調查。濟南遙牆國際機場:鼓包或破損的充電寶也「禁飛」7月4日,濟南遙牆國際機場工作人員向記者表示,該機場嚴格執行民航局通知,禁止旅客...