目录
概述
我们都知道。

xxx.$on可以订阅一个消息。
xxx.$emit可以发布一个消息。
xxx.$off可以取消订阅一个消息。
思路要清晰
这个过程涉及到的几个概念。
订阅过程:
消息,肯定要区分,来个name。
消息也要有事做,来个handler。
一堆消息,要有地方放,来个arr。
订阅时,交代叫什么name,干什么handler。
发布过程:
发布时,交代叫什么,来个name。
发布也可能有一些参数,来个param。
发布时,交代叫什么name,传递参数param。
取消订阅过程:
取消订阅,肯定要知道名字,来个name。
取消订阅时,交代要取消的name。
实现要迅猛
代码不多
class EventBus {
constructor() {
this.arr = [];
}
on = (name, fn) => {
let filter = this.arr.filter(v => v.name === name);
if (filter.length === 0) {
this.arr.push({
name, fn
})
}
}
emit = (name, param) => {
let filter = this.arr.filter(v => v.name === name);
if (filter.length === 1) {
filter[0].fn(param);
}
}
off = (name) => {
this.arr = this.arr.filter(v => v.name !== name);
}
}
构造:初始化事件数组。
实例的on:查重,如果重复了就啥都不干。没重复就push。
实例的emit:查重,如果有这事件就调用。
实例的off:筛选赋值。
测试效果
代码不多。
let bus = new EventBus();
bus.on('say', (msg) => {
console.log(msg);
});
let i = 0;
let timer = setInterval(() => {
if (i >= 30) {
bus.off('say');
clearInterval(timer);
return;
}
bus.emit('say', "你好,世界!" + i++)
}, 1000);
新建一个消息中心。
订阅一个事件。
计时器,每隔一秒发布该消息。
30下后,取消订阅。
运行结果:
30秒后:
查看是否取消成功:
成功!
优化
使用ES6的Map代替数组,效率更好。
class EventBus {
map = new Map();
on = (name, handler) => {
if (!this.map.has(name)) {
this.map.set(name, handler);
}
}
emit = (name, param) => {
let handler = this.map.get(name);
if (handler !== null) {
handler(param);
}
}
off = (name) => {
this.map.delete(name);
}
}
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
相关推荐:
打造内容创作新高度:文章扩写AI的革命性优势
SEO要好,网站流量翻倍的关键秘诀,品牌网站建设关键词优化
怎么用AI写文:让创作更轻松,效率翻倍
SEO文案:如何通过巧妙布局提升网站排名,吸引更多流量,娄底网站建设工作文案
AI免费生成文字,打造创作新时代
seo需要什么器械,seo需要什么器械才能做 ,长续航ai纯电汽车
ChatGPT故障:科技背后的秘密与应对策略,华为什么手机带ai功能
ChatGPT付款银行卡被拒绝?解决方案全解析!,小发猫ai智能写作查重能过吗
wordpress seo是什么,wordpress建站seo好做吗 ,学习图文ai
SEO导流:如何通过精准优化实现网站流量大爆发,网站优化优化怎么做
seo需要了解什么,seo需要学些什么内容 ,ovo ai
智能AI生成文章释放创作新可能
AI人工智能文章生成器写作新纪元
Bing搜索的注意事项-提高搜索效率与准确性,轻松获取所需信息,最近ai写作软件推荐
SEO提高:如何通过精准优化让网站流量翻倍,优化排名seo加盟费用
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
英语日记AI生成:轻松提升英语水平的智能助手
AI软件不用登录,让你的工作更高效轻松,智能ai写作改稿怎么改
ChatGPT不能用?揭秘你可能忽视的真相和解决方法,强国ai2022
SEO分类中内部优化的有:让你的网站脱颖而出!,by ai
seo需要会什么技术呢,seo需要会什么技术呢知乎 ,红色框ai
seo链接有什么用,seo外链是什么意思 ,one ai写作
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
AI助手推进:智能化时代的企业革命,ai改变图片颜色
什么是seo网络推广seo顾问,seo网络推广员 ,ai20170119
SEO添加:提升网站流量与排名的必备策略,seo团队成员中国人
【BVIP尊享体验:超越奢华,开启专属未来】,珠宝网站建设思路
chatai写作免费一键生成,轻松解决写作难题!,陈逗逗ai换脸在线看
SEO要求:如何优化网站提升搜索引擎排名,助力企业获取更多流量,鹤山区网站运营推广
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决常见问题!,ai招生广告设计
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
撰写稿子的AI,写作的“超级助手”来了!
优化型网站:提升企业竞争力的必备利器,重庆网站推广工作如何
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
SEO优化知识全解析:提升网站排名的秘密武器,ai出错合集
SEO实现:如何通过SEO优化提升网站流量与排名,南京市公司网站推广
优化网站的秘诀:提高网站速度与用户体验,助力业务腾飞,旅游网站建设步骤
ChatGPT怎么打不开了?揭秘背后的原因与解决方法,ai中打开ai文件丢失
OpenAIGPTChatSoraOpenAIChatGPT服务在中断数小时后已恢复,ai视图线稿
为什么选择B站VIP?让你畅享更丰富的视听体验,小门类网站seo
SEO优化做什么的?揭秘SEO优化的核心价值与实战应用,ai做金色
360关键:打造全方位安全保护,守护您的数字世界,ai乘bi
AI自动生成:开启智能时代的无限可能,ai熊熊图片
自动AI写文章:轻松创作时代的全新利器
seo规范是什么,seo行业标准 ,啊龙ai音乐
丹东抖音seo是什么,抖音seo引流 ,ai工具编写作业指导书
AI免费写文:创作新时代的高效助手
企业如何借助SEO咨询实现精准流量引爆,助力业绩提升,立刻推广的旅游线下营销
SEO包月服务:助力企业提升网站排名与流量的长期利器,网站建设流程 报读文库