事件命名方式使用大小寫(xiě)分隔的風(fēng)格。例如:'stream', 'data', 'messageBegin'。 可以將函數(shù)注冊(cè)給對(duì)象,使其在事件觸發(fā)時(shí)執(zhí)行, 此類函數(shù)被稱作‘監(jiān)聽(tīng)器‘。
通過(guò)調(diào)用require('events').EventEmitter, 我們可以使用EventEmitter(事件觸發(fā)器)類。 當(dāng)向EventEmitters(事件觸發(fā)器)對(duì)象上注冊(cè)新的時(shí)間監(jiān)聽(tīng)器時(shí),都會(huì)觸發(fā)'newListener'事件。 當(dāng)事件觸發(fā)器過(guò)程中出現(xiàn)錯(cuò)誤時(shí),典型的處理方式是它將觸發(fā)一個(gè)'error'事件。Error 事件的特殊性在于:如果 沒(méi)有函數(shù)處理這個(gè)事件,它將會(huì)輸出調(diào)用堆棧,并隨之退出應(yīng)用程序。
Event: 'newListener'
function (event, listener) { }
該事件在添加新監(jiān)聽(tīng)器時(shí)被觸發(fā)。
Event: 'error'
function (exception) { }
如果發(fā)生錯(cuò)誤,'error'事件將會(huì)被觸發(fā)。這是一個(gè)特殊事件,如果沒(méi)有相應(yīng)的監(jiān)聽(tīng)函數(shù)監(jiān)聽(tīng)這個(gè)事件, node 將 會(huì)結(jié)束應(yīng)用程序的執(zhí)行并顯示異常堆棧。
emitter.on(event, listener)
向指定的事件監(jiān)聽(tīng)器數(shù)組尾部添加一個(gè)新監(jiān)聽(tīng)器。
server.on('stream', function (stream) {
console.log('someone connected!');
});
emitter.removeListener(event, listener)
從指定監(jiān)聽(tīng)器數(shù)組中刪除一個(gè)監(jiān)聽(tīng)器。需要注意的是,此操作將會(huì)改變處于被刪監(jiān)聽(tīng)器之后的那些監(jiān)聽(tīng)器的索 引。
var callback = function(stream) {
console.log('someone connected!');
};
server.on('stream', callback);
// ...
server.removeListener('stream', callback);
emitter.removeAllListeners(event)
刪除指定事件的所有監(jiān)聽(tīng)器。
emitter.listeners(event)
返回指定事件的監(jiān)聽(tīng)器數(shù)組。你可以操作數(shù)組的內(nèi)容,比如說(shuō)刪除一個(gè)監(jiān)聽(tīng)器。
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)聽(tīng)器數(shù)組中的每一個(gè)監(jiān)聽(tīng)函數(shù)。
更多建議: