新聞中心
文檔: 4 - API 凍結(jié)node里很多對象會分發(fā)事件: 每次有連接的時候net.Server會分發(fā)事件,當文件打開的時候fs.readStream會分發(fā)事件。所有能分發(fā)事件的對象都是 events.EventEmitter的實例。通過require("events");能訪問這個模塊。

在隨縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,隨縣網(wǎng)站建設(shè)費用合理。
一般來說,事件名都遵照駝峰規(guī)則,但這不是強制規(guī)定,任何形式的字符串都可以做為事件名。
為了處理事件,通常將函數(shù)關(guān)聯(lián)到對象上。這些函數(shù)也叫監(jiān)聽者(listeners)。在這個函數(shù)里,this指向監(jiān)聽者所關(guān)聯(lián)的EventEmitter。
類: events.EventEmitter
你可以通過require('events').EventEmitter獲取EventEmitter類。
EventEmitter實例遇到錯誤后,通常會觸發(fā)一個錯誤事件。錯誤事件在node里是特殊例子。如果沒有監(jiān)聽者,默認的操作是打印一個堆棧信息并退出程序。
當添加新的監(jiān)聽者時, EventEmitters會觸發(fā)'newListener'事件,當移除時會觸發(fā)'removeListener'。
emitter.addListener(event, listener)
emitter.on(event, listener)
添加一個監(jiān)聽者到特定event的監(jiān)聽數(shù)組的尾部,觸發(fā)器不會檢查是否已經(jīng)添加過這個監(jiān)聽者。 多次調(diào)用相同的event和listener將會導致listener添加多次。
server.on('connection', function (stream) {
console.log('someone connected!');
});返回emitter。
emitter.once(event, listener)
給事件添加一個一次性的listener,這個listener只會被觸發(fā)一次,之后就會被移除。
server.once('connection', function (stream) {
console.log('Ah, we have our first user!');
});返回emitter。
emitter.removeListener(event, listener)
從一個某個事件的listener數(shù)組中移除一個listener。注意,這個操作會改變listener數(shù)組內(nèi)容的次序。
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);removeListener最多會移除數(shù)組里的一個listener。如果多次添加同一個listener到數(shù)組,那就需要多次調(diào)用removeListener來移除每一個實例。
返回emitter。
emitter.removeAllListeners([event])
移除所有的listener,或者某個事件listener。最好不要移除全部listener,尤其是那些不是你傳入的(比如socket或文件流)。
返回emitter。
emitter.setMaxListeners(n)
默認情況下,給單個事件添加超過10個listener,事件分發(fā)器會打印警告。這樣有利于檢查內(nèi)存泄露。不過不是所有的分發(fā)器都應(yīng)該限制在10個,這個函數(shù)允許改變 listener數(shù)量,無論是0還是更多。
返回emitter。
EventEmitter.defaultMaxListeners
emitter.setMaxListeners(n)設(shè)置一個分發(fā)器的最大listener數(shù),而這個函數(shù)會立即設(shè)置所有EventEmitter的當前值和默認值。要小心使用。
請注意,emitter.setMaxListeners(n)的優(yōu)先級高于EventEmitter.defaultMaxListeners.
emitter.listeners(event)
用于返回事件的listener數(shù)組。
server.on('connection', function (stream) {
console.log('someone connected!');
});
console.log(util.inspect(server.listeners('connection'))); // [ [Function] ]
emitter.emit(event[, arg1][, arg2][, ...])
允許你使用指定的參數(shù)順序的執(zhí)行每一個listener.
如果事件有 listener,返回true, 否則false
類方法: EventEmitter.listenerCount(emitter, event)
返回指定事件的listener數(shù)量。
Event: 'newListener'
event{String}事件名listener{Function}事件處理函數(shù)
添加listener的時候會觸發(fā)這個事件。當這個事件觸發(fā)的時候,listener可能還沒添加到listener數(shù)組。
Event: 'removeListener'
event{String}事件名listener{Function}事件處理函數(shù)
刪除listener的時候會觸發(fā)這個事件。當這個事件觸發(fā)的時候,listener可能還還沒從listener數(shù)組移除。
當前文章:創(chuàng)新互聯(lián)Node.js教程:Node.js事件
文章地址:http://m.5511xx.com/article/dphgpog.html


咨詢
建站咨詢
