设计模式之发布/订阅模式
来源:互联网 发布:内衣淘宝代销 编辑:程序博客网 时间:2024/05/29 15:05
<pre name="code" class="html"><html> <head> <title>Observer</title> <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script> </head> <body> <script type="text/javascript"> var pubsub = (function() { //订阅者列表 var events = {}; var subUid = 0; //发布 function publish(eventName, args) { if (!events[eventName]) { return false; } var subscribers = events[eventName]; var len = subscribers.length; while (len--) { subscribers[len].callback(eventName, args); } } //订阅 function subscribe(eventName, callback) { events[eventName] = events[eventName] || []; var id = subUid++; events[eventName].push({ callback: callback, id: id }); return id; } //取消订阅 function unsubscribe(id) { var eventName; var i; var len; var subscribers; for (eventName in events) { subscribers = events[eventName]; if (subscribers) { for (i = 0, len = subscribers.length; i < len; i++) { if (subscribers[i].id === id) { subscribers.splice(i, 1); return id; } } } } return this; } //利用Revealing Module模式隐藏内部实现,提供接口 return { publish: publish, subscribe: subscribe, unsubscribe: unsubscribe }; }()); //在hello事件生增加一个订阅 var subscription = pubsub.subscribe("hello", function(eventName, data) { console.log("Event:" + eventName + "/data:" + data); }); //向订阅者发送消息 pubsub.publish("hello", ["天镶"]); //向订阅者发送消息 pubsub.publish("hello", ["天镶", "求", "offer"]); //取消订阅 pubsub.unsubscribe(subscription); //向订阅者发送消息 pubsub.publish("hello", ["天镶", "再求", "offer"]); </script> </body></html>
0 0
- 设计模式之发布/订阅模式
- JS设计模式之发布订阅模式
- 十六 设计模式之观察者模式(发布订阅模式)
- 设计模式之观察者模式(发布-订阅模式)
- java笔记--设计模式之观察者(订阅/发布)模式
- 设计模式---订阅发布模式(Subscribe/Publish)
- 设计模式---订阅发布模式(Subscribe/Publish)
- 设计模式——订阅发布模式
- javascript设计模式-(发布-订阅模式)
- JavaScript设计模式-发布订阅模式
- java设计模式-观察者(发布-订阅)模式
- javascript 设计模式 发布订阅模式
- JavaScript之发布-订阅模式
- 观察者模式之二 -发布 订阅模式
- 【JavaScript设计模式】行为型设计模式--发布-订阅模式
- 设计模式之(十、观察者模式(ObServer)/发布订阅模式(Pblish/Subscribe))
- 23种设计模式 之 Observer模式(发布-订阅模式)[C语言]
- 设计模式之观察者模式(发布-订阅模式publish/Subscribe)
- ArrayList的数组声明为transient却依旧序列化的原因
- 安卓中一些常见异常总结(空指针,脚标越界)
- android adb 点亮 关闭 屏幕 命令
- HDOJ 5813 Elegant Construction(构图)
- 解决使用gradle打包报错“The first result from the daemon was empty. ”
- 设计模式之发布/订阅模式
- Python画图基本方法总结
- Centos7.0安装memcache
- 毕业生自传(离开中视--自主创业)
- POJ 3254(状态压缩dp)
- Android 插件化原理解析——Service的插件化
- androidAnnotations 配置步骤 仿照 androidannotations-develop中 examples
- hdu 1279
- Mybitas配置