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

科技分類資訊推薦

全球發明大會中國區上海開賽,超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日,濟南遙牆國際機場工作人員向記者表示,該機場嚴格執行民航局通知,禁止旅客...
最新!白雲機場:充電寶7天內免費暫存 - 天天要聞

最新!白雲機場:充電寶7天內免費暫存

今天(7月4日)是民航局充電寶乘機攜帶新政策正式實施的第6天,記者從廣州白雲機場獲悉,旅客攜帶不合規充電寶的數量呈明顯減少趨勢。據悉,白雲機場提供充電寶暫存服務供旅客選擇,兩座航站樓均設有暫存點,7天內免費暫存,7天後視為自棄處理。根據民航局通知要求,為切實保障航空運行安全,6月28日起禁止旅客攜帶沒有3C標...
小鵬G7正式上市 極致AI科技與滿配舒適兼得 - 天天要聞

小鵬G7正式上市 極致AI科技與滿配舒適兼得

日前,小鵬汽車正式發布全新AI智能家庭SUV——小鵬G7。新車共推出602長續航Max、702超長續航Max、702超長續航Ultra三個版本,上市即刻可以交付。 作為全球首款L3級算力的AI汽車,小鵬G7不僅實現了2250TOPS有效算力以及本地端VLA+VLM大模型的行業首發,更以行業領先的「追光全景」抬頭顯示、「857」的領先三電配置、太極AI底...