EventEmitter事件觸發(fā)器

2018-07-11 09:33 更新
Node 中的很多對象都會觸發(fā)事件,例如:一個TCP 服務器在收發(fā)每個數(shù)據(jù)流時都觸發(fā)事件;子進程在退出時 會觸發(fā)事件。所有能夠觸發(fā)事件的對象都是events.EventEmitter 的實例。

事件命名方式使用大小寫分隔的風格。例如:'stream', 'data', 'messageBegin'。 可以將函數(shù)注冊給對象,使其在事件觸發(fā)時執(zhí)行, 此類函數(shù)被稱作‘監(jiān)聽器‘。

通過調(diào)用require('events').EventEmitter, 我們可以使用EventEmitter(事件觸發(fā)器)類。 當向EventEmitters(事件觸發(fā)器)對象上注冊新的時間監(jiān)聽器時,都會觸發(fā)'newListener'事件。 當事件觸發(fā)器過程中出現(xiàn)錯誤時,典型的處理方式是它將觸發(fā)一個'error'事件。Error 事件的特殊性在于:如果 沒有函數(shù)處理這個事件,它將會輸出調(diào)用堆棧,并隨之退出應用程序。

Event: 'newListener'

function (event, listener) { }

該事件在添加新監(jiān)聽器時被觸發(fā)。

Event: 'error'

function (exception) { }

如果發(fā)生錯誤,'error'事件將會被觸發(fā)。這是一個特殊事件,如果沒有相應的監(jiān)聽函數(shù)監(jiān)聽這個事件, node 將 會結(jié)束應用程序的執(zhí)行并顯示異常堆棧。

emitter.on(event, listener)

向指定的事件監(jiān)聽器數(shù)組尾部添加一個新監(jiān)聽器。

server.on('stream', function (stream) {
console.log('someone connected!');
});

emitter.removeListener(event, listener)

從指定監(jiān)聽器數(shù)組中刪除一個監(jiān)聽器。需要注意的是,此操作將會改變處于被刪監(jiān)聽器之后的那些監(jiān)聽器的索 引。

var callback = function(stream) {
console.log('someone connected!');
};
server.on('stream', callback);
// ...
server.removeListener('stream', callback);

emitter.removeAllListeners(event)

刪除指定事件的所有監(jiān)聽器。

emitter.listeners(event)

返回指定事件的監(jiān)聽器數(shù)組。你可以操作數(shù)組的內(nèi)容,比如說刪除一個監(jiān)聽器。

server.on('stream', function (stream) {
console.log('someone connected!');
});
console.log(sys.inspect(server.listeners('stream'));
// [ [Function] ]
emitter.emit(event, [arg1], [arg2], [...])

使用所提供的參數(shù),依次執(zhí)行事件監(jiān)聽器數(shù)組中的每一個監(jiān)聽函數(shù)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號