直播app开发,实现简单的发布订阅者模式
直播app开发,实现简单的发布订阅者模式
1.首先想好谁是发布者
2.给发布者添加一个缓存列表,存放回调函数通知订阅者
3. 发布消息,发布者遍历缓存列表,依次触发里面存放的订阅者回调函数
1 | <br><!DOCTYPE html><br><html><br><head><br><meta charset= "utf-8" ><br><title></title><br></head><br><body><br><script><br> //发布者<br>var showObj = {}<br>//缓存列表 存放回调函数<br>showObj.list = []<br>//增加订阅者 把订阅者的回调压入缓存列表<br>showObj.listen = function(key,fn){<br>if(!this.list[key]) {<br>this.list[key] = []<br>}<br>//索引为key的那一项是一个数组 往不同的key里存放不同的订阅者 这样就可区分开来<br>this.list[key].push(fn)<br>}<br>//发布消息 <br>showObj.trigger = function() {<br>//取出key<br>var key = Array.prototype.shift.call(arguments)<br>var fns = this.list[key]<br>if(!fns || fns.length == 0) {<br>return <br>}<br>//遍历这个数组 执行这个函数<br>for(let i = 0,fn;fn = fns[i++];) {<br>fn.apply(this,arguments)<br>}<br>}<br>//移除订阅<br>// showObj.remove = function(key,fn){<br>// var fns = this.list[key]<br>// if(!fns) {<br>// return <br>// } <br>// if(!fn) {<br>// !fns && (fns.length === 0)<br>// } else {<br>// for(var i = fns.length - 1; i >= 0; i--) {<br>// var _fn = fns[i]<br>// if(_fn === fn) {<br>// fns.splice(i,1)<br>// }<br>// }<br>// }<br>// }<br>//订阅消息 <br>showObj.listen('red',function(size){<br>// console.log('颜色是'+color)<br>console.log('尺码是'+size)<br>})<br>showObj.listen('black',function(size){<br>// console.log('颜色是'+color)<br>console.log('尺码是'+size)<br>})<br>//发布消息<br>showObj.trigger('red',37)<br>showObj.trigger('black',41)<br>// showObj.remove('red')<br></script><br></body><br></html> |
以上就是直播app开发,实现简单的发布订阅者模式, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-01-03 短视频app源码,点击查看图片,双指放大
2022-01-03 直播系统代码,自行更改导航栏样式
2022-01-03 直播源码网站,各式各样的淡入淡出动画