最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js 发布订阅模式的实例讲解

来源:懂视网 责编:小采 时间:2020-11-27 22:30:34
文档

js 发布订阅模式的实例讲解

js 发布订阅模式的实例讲解:废话不多说,直接上代码 //发布订阅模式 class EventEmiter{ constructor(){ //维护一个对象 this._events={ } } on(eventName,callback){ if( this._events[eventName]){ //如果有就放一个新的 this._events[event
推荐度:
导读js 发布订阅模式的实例讲解:废话不多说,直接上代码 //发布订阅模式 class EventEmiter{ constructor(){ //维护一个对象 this._events={ } } on(eventName,callback){ if( this._events[eventName]){ //如果有就放一个新的 this._events[event

废话不多说,直接上代码

//发布订阅模式
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 发布订阅模式的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

文档

js 发布订阅模式的实例讲解

js 发布订阅模式的实例讲解:废话不多说,直接上代码 //发布订阅模式 class EventEmiter{ constructor(){ //维护一个对象 this._events={ } } on(eventName,callback){ if( this._events[eventName]){ //如果有就放一个新的 this._events[event
推荐度:
标签: 模式 发布 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top