2020-10-28 11:19:06 +08:00
|
|
|
package events
|
|
|
|
|
|
|
|
|
|
import "sync"
|
|
|
|
|
|
|
|
|
|
var eventsMap = map[string][]func(){} // event => []callbacks
|
|
|
|
|
var locker = sync.Mutex{}
|
|
|
|
|
|
2022-01-02 22:45:37 +08:00
|
|
|
// On 增加事件回调
|
2020-10-28 11:19:06 +08:00
|
|
|
func On(event string, callback func()) {
|
|
|
|
|
locker.Lock()
|
|
|
|
|
defer locker.Unlock()
|
|
|
|
|
|
|
|
|
|
callbacks, _ := eventsMap[event]
|
|
|
|
|
callbacks = append(callbacks, callback)
|
|
|
|
|
eventsMap[event] = callbacks
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-02 22:45:37 +08:00
|
|
|
// Notify 通知事件
|
2020-10-28 11:19:06 +08:00
|
|
|
func Notify(event string) {
|
|
|
|
|
locker.Lock()
|
|
|
|
|
callbacks, _ := eventsMap[event]
|
|
|
|
|
locker.Unlock()
|
2021-02-06 17:34:33 +08:00
|
|
|
|
2020-10-28 11:19:06 +08:00
|
|
|
for _, callback := range callbacks {
|
|
|
|
|
callback()
|
|
|
|
|
}
|
|
|
|
|
}
|