2019-01-03 01:08:19 +08:00
2018-12-19 00:40:42 +08:00
2018-12-11 21:48:48 +08:00
2019-01-03 01:08:19 +08:00
2019-01-03 00:58:59 +08:00
2018-12-19 00:40:42 +08:00
2018-12-11 21:48:48 +08:00
2019-01-03 00:58:59 +08:00
2019-01-03 01:08:19 +08:00
2019-01-03 00:58:59 +08:00

event

GoDoc Build Status Coverage Status Go Report Card

Go 实现的轻量级的事件管理、调度工具库

  • 支持自定义定义事件对象
  • 支持对一个事件添加多个监听器
  • 支持设置监听器的优先级,优先级越高越先触发
  • 支持根据事件名称前缀 PREFIX. 来进行一组事件监听.
    • 注册app.* 事件,触发 app.run app.end 时,都将同时会触发 app.* 事件
  • 支持使用通配符 * 来监听全部事件的触发
  • 完善的单元测试,单元覆盖率 > 95%

GoDoc

主要方法

  • On(name string, listener Listener, priority ...int) 注册事件监听
  • Fire(name string, params M) error 触发事件
  • MustFire(name string, params M) 触发事件有错误则会panic
  • FireEvent(e Event) (err error) 根据给定的事件实例,触发事件
  • FireBatch(es ...interface{}) (ers []error) 一次触发多个事件

快速使用

package main

import (
	"fmt"
	"github.com/gookit/event"
)

func main() {
	// 注册事件监听器
	event.On("evt1", event.ListenerFunc(func(e event.Event) error {
        fmt.Printf("handle event: %s\n", e.Name())
        return nil
    }), event.Normal)
	
	// 注册多个监听器
	event.On("evt1", event.ListenerFunc(func(e event.Event) error {
        fmt.Printf("handle event: %s\n", e.Name())
        return nil
    }), event.High)
	
	// ... ...
	
	// 触发事件
	// 注意:第二个监听器的优先级更高,所以它会先被执行
	event.MustFire("evt1", event.M{"arg0": "val0", "arg1": "val1"})
}

同时注册多个事件

TODO

LICENSE

MIT

Description
No description provided
Readme MIT 456 KiB
Languages
Go 100%