分布式事件
PubSub模式
从原生的js角度,我们要监听某事件的方法就是利用addEventListener方法,但是当我们的页面趋于复杂,比如要向某个元素添加多个处理事件,那么就要用一个封装函数汇集多个处理函数
link.onclick = function() { clickHandler1.apply(this, arguments); clickHandler2.apply(this, arguments);};
在jquery中,jquery.on()方法使用的比较多,在新版的jquery中,也舍弃了bind()方法,统一使用on,jQuery 将link 元素的事件发布给了任何想订阅此事件的人。
Node.js中的EventEmitter 对象要想给EventEmitter 对象添加一个事件处理器,只要以事件类型和事件处理器为参数调用on 方法即可。
emitter.on('evacuate', function(message) { console.log(message);});
emit(意为“触发”)方法负责调用给定事件类型的所有处理器。举个例子,下面这行代码:
emitter.emit('evacuate');
将调用evacuate 事件的所有处理器。
请注意,这里的术语事件跟事件队列没有任何关系。
使用emit 方法触发事件时,可以添加任意多的附加参数。所有参数均传递至所有处理器。
emitter.emit('evacuate', 'Woman and children first!');
事件名称不存在任何限制,然而Node 相关文档还是规定了一条有用的约定。
实现一个PubSub模式
一个PubSub模型主要方法有3个,订阅,退订,发布
####使用
挖个坑 ,找一下jquery.on()的源码,看一下它自定义事件的实现
PubSub模式不适用在一次性的事件中,,如果是用Promise的话就比较适合一次性的事件。
关于分布式事件,也可以参考一下angular.js的双向数据绑定的实现,