(精华)2020年6月28日 JavaScript高级篇 设计模式-发布订阅模式
2023-06-13 09:11:03 时间
大家好,又见面了,我是你们的朋友全栈君。
//发布订阅对象
var eventObj = {
//缓存列表,存放订阅者的信息
list:{
},
//添加订阅
listen:function(key,fn){
if(!this.list[key]){
this.list[key] = [];
}
typeof fn==='function' && this.list[key].push(fn);
},
// 发布信息
trigger:function(){
// 取出颜色 color
// var key = [].shift.call(arguments);
var key = Array.prototype.shift.call(arguments);
// var key = Array.from(arguments).shift();
var fns = this.list[key];
for(var i=0,len=fns.length;i<len;i++) {
var fn = fns[i];
// fn();
fn.apply(this,arguments);
}
},
//取消订阅
removeListen(key,fn){
var fns = this.list[key];
//不存在的订阅类型,以及订阅未传入处理回调
if(!fns) {
return;
}
if(typeof fn==='undefined'){
return;
}
var sindex = fns.indexOf(fn);
fns.splice(sindex,1);
}
}
var ajaxObj = Object.create(eventObj);
ajaxObj.listen('success',function(data){
console.log(data);
})
function getData(){
xmlAjax({
method:'post',
url:'http://localhost:3000/api/GetUser',
done:function(data){
ajaxObj.trigger('success',{
fromData1:data
});
}
});
}
getData();
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171335.html原文链接:https://javaforall.cn
相关文章
- JavaScript设计模式—-策略模式[通俗易懂]
- 如何在JavaScript中使用数组方法:Mutator方法[通俗易懂]
- 面试官:请实现Javascript发布-订阅模式
- 「设计模式 JavaScript 描述」命令模式
- 「设计模式 JavaScript 描述」组合模式
- 「设计模式 JavaScript 描述」模板方法模式
- javascript编程单线程之异步模式Asynchronous
- JavaScript学习总结(十七)——Javascript原型链的原理详解编程语言
- 通过JAVASCRIPT读取ASP设定的COOKIE
- 用JavaScript事件串连执行多个处理过程的方法
- 一段多浏览器的"复制到剪贴板"javascript代码
- 权威JavaScript中的内存泄露模式
- javascript输入框提示列表效果
- javascript模式设计之工厂模式详细说明
- JavaScript设计模式富有表现力的Javascript(一)
- JavaScript设计模式安全沙箱模式
- JavaScript面向对象程序设计三原型模式(上)
- javascript的原生方法获取数组中的最大(最小)值
- Javascript封装DOMContentLoaded事件实例
- Javascript学习笔记之函数篇(二):this的工作机制
- JavaScript设计模式之外观模式介绍
- JavaScript设计模式之原型模式(Object.create与prototype)介绍
- JavaScript设计模式之抽象工厂模式介绍