温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

js中发布订阅模式的示例分析

发布时间:2021-07-23 11:34:40 来源:亿速云 阅读:150 作者:小新 栏目:web开发

这篇文章主要介绍js中发布订阅模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

代码

//发布订阅模式 class EventEmiter{   constructor(){     //维护一个对象     this._events={     }   }   on(eventName,callback){     if( this._events[eventName]){       //如果有就放一个新的       this._events[eventName].push(callback);     }else{       //如果没有就创建一个数组       this._events[eventName]=[callback]     }   }   emit(eventName,...rest){     if(this._events[eventName]){ //循环一次执行       this._events[eventName].forEach((item)=>{         item.apply(this,rest)       });     }   }   removeListener(eventName,callback){     if(this._events[eventName]){       //当前数组和传递过来的callback相等则移除掉       this._events[eventName]=         this._events[eventName].filter(item=>item!==callback);     }   }   once(eventName,callback){     function one(){       //在one函数运行原来的函数,只有将one清空       callback.apply(this,arguments);       //先绑定 执行后再删除       this.removeListener(eventName,one);     }     this.on(eventName,one);       //此时emit触发会执行此函数,会给这个函数传递rest参数   } } class Man extends EventEmiter{} let man=new Man() function findGirl() {   console.log('找新的女朋友') } function saveMoney() {   console.log('省钱') } man.once('失恋',findGirl); //man.on('失恋',findGirl) //失恋 ,绑定一个函数方法 man.on('失恋',saveMoney)//失恋 ,绑定一个函数方法 man.removeListener('失恋',saveMoney); //移除一个函数方法 man.emit('失恋'); //绑定一次,触发多次,也只执行一次。触发后一次将数组中的哪一项删除掉下次触发就不会执行

以上是“js中发布订阅模式的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js
AI