2 Star 0 Fork 0

nrgo / event

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 1.93 KB
一键复制 编辑 原始数据 按行查看 历史
tm 提交于 2021-02-22 00:18 . migrate

event

介绍

event interface & inproc event hub

接口定义

// Manager 定义事件管理器接口
type Manager interface {
	// On 注册一个指定事件
	//	@trigger 触发事件的 trigger
	//	@handlerName 触发事件的 trigger 的标记名称
	//	@handler 事件委托
	// returns
	// 	@error ErrInvalidTrigger | ErrInvalidHandlerName | ErrEventHandlerNotFunc
	On(trigger, handlerName string, handler interface{}) error

	// Fire 触发一个指定事件
	//	@trigger 触发事件的 trigger
	//	@args 回调事件委托传入的参数
	// returns
	//	@bool 触发是否被链中某个回调给阻止
	//	@error 在回调过程中发生的错误
	Fire(trigger string, args ...interface{}) (stopPropagation bool, err error)

	// RemoveHandler 移除一个指定handler
	//	@trigger 触发事件的 trigger
	//	@handlerName 触发事件的 trigger 的标记名称
	RemoveHandler(trigger, handlerName string)

	// RemoveTrigger 移除一个指定trigger
	//	@trigger 触发事件的 trigger
	RemoveTrigger(trigger string)

	// Triggers 返回所有已注册的 trigger 名
	Triggers() []string

	// HandlerNames 指定 trigger 已绑定的 handler 名称
	HandlerNames(trigger string) []string
}

使用说明

//定义事件(委托)方法 var handler = func(arg1, arg2) (stopPropagation bool, err error)
//	bool 指定链冒泡是否继续,为 true 时阻止传递
//	error 指定委托方法中是否出现错误
//	当停止冒泡或委托错误时,将阻止冒泡

// 初始化
em := NewEventManager() 

// 注册事件 
em.On("trigger", "hanlderName", handler)

// 分发事件 
em.Fire("trigger", arg1, arg2, arg3...) (stopPropagation bool, err error)

// 清除指定链 
em.RemoveTrigger("trigger")

// 清除指定委托
em.RemoveHandler("trigger", "hanlderName")

// 获取事件 trigger 名称集合 
em.Triggers() []string

// 获取指定事件 trigger 的委托名称集合
em.HandlerNames("trigger") []string
Go
1
https://gitee.com/nrgo/event.git
git@gitee.com:nrgo/event.git
nrgo
event
event
master

搜索帮助