您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關小程序開發(fā)中如何使用事件監(jiān)聽器的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
事件監(jiān)聽在開發(fā)中經(jīng)常會用到,在編程語言中,監(jiān)聽器是一個專門用于對其他對象身上發(fā)生的事件或狀態(tài)改變進行監(jiān)聽和相應處理的對象,當被監(jiān)視的對象發(fā)生情況時,立即采取相應的行動。監(jiān)聽器的特點是被動觸發(fā),而且觸發(fā)事件執(zhí)行是即時的。小程序開發(fā)中也有這樣一個處理事件機制,Node.js所有的異步 I/O 操作在完成時都會發(fā)送一個事件到事件隊列。Node.js里面的許多對象都會分發(fā)事件:一個net.Server對象會在每次有新連接時分發(fā)一個事件,一個fs.readStream對象會在文件被打開的時候發(fā)出一個事件。所有這些產(chǎn)生事件的對象都是 events.EventEmitter 的實例。那么如何在小程序制作中使用事件監(jiān)聽器?
events 模塊只提供了一個對象: events.EventEmitter
EventEmitter的核心就是事件觸發(fā)與事件監(jiān)聽器功能的封裝。
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ù)\');
addListener(event,listener) 為指定事件添加一個監(jiān)聽器到監(jiān)聽器數(shù)組的尾部。
on(event,listener) 為指定事件注冊一個監(jiān)聽器,接受一個字符串 event 和一個回調(diào)函數(shù)。
once(event,listener) 為指定事件注冊一個單次監(jiān)聽器,即 監(jiān)聽器最多只會觸發(fā)一次,觸發(fā)后立刻解除該監(jiān)聽器。
removeListener(event,listener) 移除指定事件的某個監(jiān)聽器,監(jiān)聽器必須是該事件已經(jīng)注冊過的監(jiān)聽器。
它接受兩個參數(shù),第一個是事件名稱,第二個是回調(diào)函數(shù)名稱。
removeAllListeners([event])移除所有事件的所有監(jiān)聽器, 如果指定事件,則移除指定事件的所有監(jiān)聽器。
setMaxListeners(n)默認情況下, EventEmitters 如果你添加的監(jiān)聽器超過 10 個就會輸出警告信息。 setMaxListeners 函數(shù)用于提高監(jiān)聽器的默認限制的數(shù)量。
listeners(event)返回指定事件的監(jiān)聽器數(shù)組。
emit(event,[arg1], [arg2], […]) 按參數(shù)的順序執(zhí)行每個監(jiān)聽器,如果事件有注冊監(jiān)聽返回 true,否則返回 false。
類方法中l(wèi)istenerCount(emitter,event)返回指定事件的監(jiān)聽器數(shù)量。
監(jiān)聽事件
removeListener從指定監(jiān)聽器數(shù)組中刪除一個監(jiān)聽器。需要注意的是,此操作將會改變處于被刪監(jiān)聽器之后的那些監(jiān)聽器的索引。
event - 字符串,事件名稱
listener - 處理事件函數(shù)
newListener 該事件在添加新監(jiān)聽器時被觸發(fā)。
event - 字符串,事件名稱
listener - 處理事件函數(shù)
error 它包含了錯誤的語義,我們在遇到 異常的時候通常會觸發(fā) error 事件。
當 error 被觸發(fā)時,EventEmitter 規(guī)定如果沒有響 應的監(jiān)聽器,Node.js 會把它當作異常,退出程序并輸出錯 誤信息。我們一般要為會觸發(fā) error 事件的對象設置監(jiān)聽器,避免遇到錯誤后整個程序崩潰。
大多數(shù)時候我們不會直接使用 EventEmitter,而是在對象中繼承它。包括 fs、net、 http在內(nèi)的,只要是支持事件響應的核心模塊都是EventEmitter的子類。這樣做的好處在于具有某個實體功能的對象實現(xiàn)事件符合語義, 事件的監(jiān)聽和發(fā)射應該是一個對象的方法。其次js的對象機制是基于原型的,支持部分多重繼承,繼承EventEmitter不會打亂對象原有的繼承關系。
感謝各位的閱讀!關于“小程序開發(fā)中如何使用事件監(jiān)聽器”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。