ListenerBus 事件匯流排

2021-09-29 00:26:59 字數 986 閱讀 3812

listenerbus可以接收事件並將事件送到對應的事件***

listenerbus原始碼中第一行,建立了乙個執行緒安全的arraylist——copyonwritearraylist,之後新增、者刪除事件等操作都在這個執行緒安全的arraylist中執行

private

[spark] val listeners =

newcopyonwritearraylist

[l]

private

[spark] trait listenerbus

[l <

: anyref, e]

extends

logging

/** * 在copyonwritearraylist刪除***

*/final def removelistener

(listener: l)

: unit =

/** * 把事件傳送到copyonwritearraylist中所有的***

* 但這個方法不是執行緒安全的,對此方法的呼叫要在同一執行緒中

*/def posttoall

(event: e)

: unit =

catch

threw an exception"

, e)}}

}/**

* 把事件傳送到指定的***,只是定義了介面並沒有實現該方法,子類須實現該函式

*/protected def dopostevent

(listener: l, event: e)

: unit

/*** 查詢copyonwritearraylist中與指定型別相同的***

*/private

[spark] def findlistenersbyclass[t <

: l : classtag]()

: seq[t]

=}

Vue事件匯流排

相鄰元件之間可以通過this.emit 觸發父元件的事件並且傳遞引數 那麼隔著多個元件,如果一步到位,觸發對方的事件並且傳遞引數呢?vue.prototype.bus new vue 中,在vue原型上掛載this.bus.on datafroma function data 一般在mounted生...

事件匯流排 EventBus

在非父子元件需要進行通訊的時候,除了vuex之外,還有就是事件匯流排了 eventbus 又稱為事件匯流排。在vue中可以使用 eventbus 來作為溝通橋梁的概念,就像是所有元件共用相同的事件中心,可以向該中心註冊傳送事件或接收事件,所以元件都可以上下平行地通知其他元件,但也就是太方便所以若使用...

vue 事件匯流排問題

問題一 不同元件傳值 非父子元件 在main.js中,構建 eventbus new vue pagea.vue 在methods中發布事件 eventbus.emit test 123 應該在pageb.vue生命週期creatd mounted中觸發事件,eventbus.on test con...