關(guān)于Node.js的events.EventEmitter用法介紹

Node.js 所有的異步 I/O 操作在完成時都會發(fā)送一個事件到事件隊列。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供霍邱網(wǎng)站建設(shè)、霍邱做網(wǎng)站、霍邱網(wǎng)站設(shè)計、霍邱網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、霍邱企業(yè)網(wǎng)站模板建站服務(wù),10余年霍邱做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

Node.js里面的許多對象都會分發(fā)事件:一個net.Server對象會在每次有新連接時分發(fā)一個事件, 一個fs.readStream對象會在文件被打開的時候發(fā)出一個事件。 所有這些產(chǎn)生事件的對象都是 events.EventEmitter 的實例。
EventEmitter 類

events 模塊只提供了一個對象: events.EventEmitter。EventEmitter 的核心就是事件觸發(fā)與事件監(jiān)聽器功能的封裝。

你可以通過require(“events”);來訪問該模塊。

// 引入 events 模塊 
var events = require('events'); 
// 創(chuàng)建 eventEmitter 對象 
var eventEmitter = new events.EventEmitter(); 

EventEmitter 對象如果在實例化時發(fā)生錯誤,會觸發(fā) ‘error' 事件。當添加新的監(jiān)聽器時,'newListener' 事件會觸發(fā),當監(jiān)聽器被移除時,'removeListener' 事件被觸發(fā)。

下面我們用一個簡單的例子說明 EventEmitter 的用法:

//event.js 文件 
var EventEmitter = require('events').EventEmitter;  
var event = new EventEmitter();  
event.on('some_event', function() {  
  console.log('some_event 事件觸發(fā)');  
});  
setTimeout(function() {  
  event.emit('some_event');  
}, 1000);  

執(zhí)行結(jié)果如下:

運行這段代碼,1 秒后控制臺輸出了 ‘some_event 事件觸發(fā)'。其原理是 event 對象注冊了事件 some_event 的一個監(jiān)聽器,然后我們通過 setTimeout 在 1000 毫秒以后向 event 對象發(fā)送事件 some_event,此時會調(diào)用some_event 的監(jiān)聽器。

$ node event.js

some_event 事件觸發(fā)

EventEmitter 的每個事件由一個事件名和若干個參數(shù)組成,事件名是一個字符串,通常表達一定的語義。對于每個事件,EventEmitter 支持 若干個事件監(jiān)聽器。

當事件觸發(fā)時,注冊到這個事件的事件監(jiān)聽器被依次調(diào)用,事件參數(shù)作為回調(diào)函數(shù)參數(shù)傳遞。

讓我們以下面的例子解釋這個過程:

//event.js 文件 
var events = require('events');  
var emitter = new events.EventEmitter();  
emitter.on('someEvent', function(arg1, arg2) {  
  console.log('listener1', arg1, arg2);  
});  
emitter.on('someEvent', function(arg1, arg2) {  
  console.log('listener2', arg1, arg2);  
});  
emitter.emit('someEvent', 'arg1 參數(shù)', 'arg2 參數(shù)');  

執(zhí)行以上代碼,運行的結(jié)果如下:

$ node event.js

listener1 arg1 參數(shù) arg2 參數(shù)

listener2 arg1 參數(shù) arg2 參數(shù)

以上例子中,emitter 為事件 someEvent 注冊了兩個事件監(jiān)聽器,然后觸發(fā)了 someEvent 事件。

運行結(jié)果中可以看到兩個事件監(jiān)聽器回調(diào)函數(shù)被先后調(diào)用。 這就是EventEmitter最簡單的用法。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)頁題目:關(guān)于Node.js的events.EventEmitter用法介紹
網(wǎng)頁鏈接:http://muchs.cn/article0/pgdooo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站維護品牌網(wǎng)站制作、做網(wǎng)站、軟件開發(fā)靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計