摘要:本篇教程介绍了JavaScript基础教程 发布/订阅实例,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。
本篇教程介绍了JavaScript基础教程 发布/订阅实例,希望阅读本篇文章以后大家有所收获,帮助大家对JavaScript的理解更加深入。
<
var events = (function(){
var topics = {};
return {
subscribe: function(topic, listener) {
// 如果没有创建,则创建一个topic对象
if(!topics[topic]) topics[topic] = { queue: [] };
// 添加监听器到队列中
var index = topics[topic].queue.push(listener) -1;
// 提供移除topic的句柄(对象)
return (function(topic, index) {
return {
remove: function() {
delete topics[topic].queue[index];
}
}
})(topic, index);
},
publish: function(topic, info) {
// 如果 topic 不存在,或者队列中没有监听器,则 return
if(!topics[topic] || !topics[topic].queue.length) return;
// 通过循环 topics 队列, 触发事件!
var items = topics[topic].queue;
items.forEach(function(item) {
item(info||{});
});
}
};
})();使用示例:发布一个topic:events.publish(‘/page/load‘, {
url: ‘/some/url/path‘ // 此处可以是任意对象,任意参数
});订阅topic以便得到事件通知:var subscription = events.subscribe(‘/page/load‘, function(obj) {
// 当事件发生时,可以执行某些操作...
});
// ... 如果某些操作完成后,不想继续订阅,移除即可...
subscription.remove();原作者在博客站点上大量地使用 发布/订阅 模式,实际的使用体验也非常好. 当一个 AJAX页面加载完成时会发布一个 topic, 然后该事件就会触发多个订阅者的响应(比如 重新加载广告, 刷新评论, 关联分享按钮等). 建议你也评估下自己的网站,看看有什么地方可以使用 pub/sub 模式.
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端JavaScript频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号