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...