溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

小程序開發(fā)中如何使用事件監(jiān)聽器

發(fā)布時間:2021-01-30 10:58:13 來源:億速云 閱讀:443 作者:小新 欄目:移動開發(fā)

這篇文章給大家分享的是有關小程序開發(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)聽器。

小程序開發(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)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI