gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/myx/eventx/event.go (about)

     1  package eventx
     2  
     3  type Handler func(event *Event) error
     4  
     5  type Event struct {
     6  	id int
     7  	// 优先级
     8  	priority int
     9  	// 处理函数
    10  	handler Handler
    11  	//
    12  	handlerKey string
    13  	// 删除标记
    14  	// 为了避免事件处理函数中触发删除事件操作导致的问题
    15  	isRemoved bool
    16  	// 是否执行一次
    17  	isOnce bool
    18  	// 监听时赋予的参数
    19  	OnParams []interface{}
    20  	// 触发时赋予的参数
    21  	DispatchParams []interface{}
    22  	// 事件的类型
    23  	Kind string
    24  	//
    25  	dispatcher *Dispatcher
    26  }
    27  
    28  func (event *Event) String() string {
    29  	return "Listener[" + event.Kind + "]"
    30  }
    31  
    32  func (event *Event) Reset() {
    33  	event.handler = nil
    34  	event.OnParams = []interface{}{}
    35  	event.DispatchParams = []interface{}{}
    36  
    37  }
    38  
    39  func (event *Event) Off() {
    40  	event.dispatcher.Off(event)
    41  }