简单的事件处理类Event
2017-07-31 15:19
204 查看
class Event{ constructor(){ this.handlers=[] } on(type,fn){ //订阅事件 if(!this.handlers[type]){ this.handlers[type] = []; } this.handlers[type].push({handle:fn,one:false}); } one(type,option={},fn){ //订阅只执行一次的事件 if(!this.handlers[type]){ this.handlers[type] = []; } this.handlers[type].push({handle:fn,one:true}); } emit(type,option,fn){ //发布某类事件或者某个事件,fn存在时候只执行订阅过的fn事件 var handlers = this.handlers[type] for (var i=0, len=handlers.length; i < len; i++){ if(fn){ if(handlers[i].handle === fn){ handlers[i].handle(option) if(handlers[i].one){ handlers.splice(i, 1); } break; } }else { handlers[i].handle(option) if(handlers[i].one){ handlers.splice(i, 1); } } } } remove(type,fn){ //移除某类事件或者某个事件,fn存在即移除该事件 var handlers = this.handlers[type] if(fn){ for (var i=0, len=handlers.length; i < len; i++){ if(handlers[i] === fn){ handlers.splice(i, 1); break; } } }else { delete this.handlers[type]; } } } export default new Event();
相关文章推荐
- 关于JTree的简单示例的补充,处理TreeSelectionEvent事件!
- 复杂事件处理(Complex Event Processing)--1. 基本概念:事件,事件关系,事件处理的简单抽象理解
- 关于JTree的简单示例的补充,处理TreeSelectionEvent事件!
- QT窗口拖拽功能简单应用(处理dragEnterEvent和dropEvent事件,不同的事件有不同的信息,比如mimeData)
- JS事件处理(removeEventListener addEventListener)
- 点击事件处理, 以及hitTest:withEvent:实现
- Event事件处理机制的实例应用
- CEP学习笔记 --- Complex Event Processing复杂事件处理
- javascript简单事件处理和with用法介绍
- javascript中一些简单事件的处理
- JavaScript Wheel Event - 使用JavaScript处理浏览器的鼠标滑轮事件
- dispatchTouchEvent(),onTouchEvent(MotionEvent event),onInterceptTouchEvent(MotionEvent event)的事件处理
- MVVM 的事件处理: 利用Prism框架进行EventToCommand
- 修改 dispatchTouchEvent方法 来处理事件冲突
- ABAP面向对象事件处理-简单实例
- android 事件处理机制之requestDisallowInterceptTouchEvent
- (4)事件处理——(7)简单事件(Simple events)
- jQuery和ExtJS的timeOut超时设置和event事件处理
- C#事件EVENT处理
- 事件处理框架-event_base