首页 > 其他分享 >直播app开发,实现简单的发布订阅者模式

直播app开发,实现简单的发布订阅者模式

时间:2023-01-03 14:24:30浏览次数:39  
标签:订阅 fns app list 直播 key showObj fn

直播app开发,实现简单的发布订阅者模式

1.首先想好谁是发布者

 

2.给发布者添加一个缓存列表,存放回调函数通知订阅者

 

3. 发布消息,发布者遍历缓存列表,依次触发里面存放的订阅者回调函数

 


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
//发布者
var showObj = {}
//缓存列表  存放回调函数
showObj.list = []
//增加订阅者  把订阅者的回调压入缓存列表
showObj.listen = function(key,fn){
if(!this.list[key]) {
this.list[key] = []
}
//索引为key的那一项是一个数组 往不同的key里存放不同的订阅者 这样就可区分开来
this.list[key].push(fn)
}
//发布消息  
showObj.trigger = function() {
//取出key
var key = Array.prototype.shift.call(arguments)
var fns = this.list[key]
if(!fns || fns.length == 0) {
return 
}
//遍历这个数组 执行这个函数
for(let i = 0,fn;fn = fns[i++];) {
fn.apply(this,arguments)
}
}
//移除订阅
// showObj.remove = function(key,fn){
// var fns = this.list[key]
// if(!fns) {
// return 
// } 
// if(!fn) {
// !fns && (fns.length === 0)
// } else {
// for(var i = fns.length - 1; i >= 0; i--) {
// var _fn = fns[i]
// if(_fn === fn) {
// fns.splice(i,1)
// }
// }
// }
// }
//订阅消息   
showObj.listen('red',function(size){
// console.log('颜色是'+color)
console.log('尺码是'+size)
})
showObj.listen('black',function(size){
// console.log('颜色是'+color)
console.log('尺码是'+size)
})
//发布消息
showObj.trigger('red',37)
showObj.trigger('black',41)
// showObj.remove('red')
</script>
</body>
</html> 

​以上就是直播app开发,实现简单的发布订阅者模式, 更多内容欢迎关注之后的文章

 

标签:订阅,fns,app,list,直播,key,showObj,fn
From: https://www.cnblogs.com/yunbaomengnan/p/17022006.html

相关文章