电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

js實現的訂閱發布者模式簡單示例

瀏覽:133日期:2024-05-17 17:30:52

本文實例講述了js實現的訂閱發布者模式.分享給大家供大家參考,具體如下:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <meta http-equiv='X-UA-Compatible' content='ie=edge'> <title>Document</title></head><body> <script> var pubsub = (function(){ var q = {}topics = {},subUid = -1; //發布消息 q.publish = function(topic, args) {//判斷有沒有當前的話題if(!topics[topic]) {return;}var subs = topics[topic],//當前話題訂閱者數組 len = subs.length;while(len--) { subs[len].func(topic, args);}return this; }; //訂閱事件 //接收兩個參數 要訂閱的話題,處理程序 q.subscribe = function(topic, func) {//如果當前話題已經有訂閱者,獲取到訂閱者數組//一個話題名下的 訂閱者事件可以是多個fn1, fn2, fn3topics[topic] = topics[topic] ? topics[topic] : [];//給每個訂閱者添加唯一的tokenvar token = (++subUid).toString();topics[topic].push({ token : token, func : func});return token; }; //取消訂閱 q.unsubscribe = function(token){Object.keys(topics).map( key => { topics[key].map((fn, fnIndex) => { if(fn.token == token){ topics[key].splice(fnIndex,1) } })}) } return q; })(); //觸發的事件(訂閱者的處理程序) var logmsg1 = function(topics, data) { console.log('logging1:' + topics + ':' + data); } var logmsg2 = function(topic, data) { console.log('logging2:' + topic + ':' + data,’我是訂閱者2’); } //監聽指定的消息’msgName’ var sub1 = pubsub.subscribe(’msgName’, logmsg1); var sub2 = pubsub.subscribe(’msgName’, logmsg2); //pubsub.unsubscribe(sub1) //發布消息’msgName’ pubsub.publish(’msgName’, ’hello world’); //發布無人監聽的消息’msgName1’ pubsub.publish(’anotherMsgName’, ’me too!’); </script></body></html>

運行結果:

js實現的訂閱發布者模式簡單示例

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 自动焊锡机_点胶机_螺丝机-锐驰机器人 | 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 | 除甲醛公司-甲醛检测-广西雅居环境科技有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 螺杆泵_中成泵业 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 广州网站建设_小程序开发_番禺网站建设_佛山网站建设_粤联网络 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 智慧水务|智慧供排水利信息化|水厂软硬件系统-上海敢创 | 柔性输送线|柔性链板|齿形链-上海赫勒输送设备有限公司首页[输送机] | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 不干胶标签,不干胶标签纸_厂家-山东同力胶粘制品 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 出国劳务公司_正规派遣公司[严海] | 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 步进驱动器「一体化」步进电机品牌厂家-一体式步进驱动 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 环氧树脂地坪漆_济宁市新天地漆业有限公司 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 英语词典_成语词典_日语词典_法语词典_在线词典网 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 焦作网 WWW.JZRB.COM | 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 礼堂椅厂家|佛山市艺典家具有限公司| 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 牛奶检测仪-乳成分分析仪-北京海谊|