定义
他定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都将得到通知,现实生活中,比如我们去售楼中心,服务人员A接待了我们,然后再有客户找到A,这时候暂时没有房子了,等有房子的时候不可能服务人员A一个一个打电话通知,而是订阅A的公共提醒服务。解决回调问题
用jq实现发布订阅模式
取经于汤姆大叔的博客
http://www.cnblogs.com/TomXu/archive/2012/03/02/2355128.html
<script>
(function($) {
var o = $({})
$.subscript = function() {
o.on.apply(o, arguments)
}
$.unsubscript = function() {
o.off.apply(o, arguments)
}
$.publish = function() {
o.trigger.apply(o, arguments)
}
})(jQuery)
//订阅
$.subscript('/some/topic', function(e, a, b, c) {
console.log(a + b + c)
})
//发布
$.publish('/some/topic', ['a', 'b', 'c'])//输出abc
//退订
$.unsubscript('/some/topic');
</script>
其它场景
- vue内部的订阅发布机制
vm.$on
vm.$once
vm.$off
vm.$emit - jquery三大事件
on off trigger - Nodejs订阅机制
//event.js 文件
var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.on('some_event', function() {
console.log('some_event 事件触发');
});
setTimeout(function() {
event.emit('some_event');
}, 1000);
网友评论