javascript中的发布/订阅模式

   发布/订阅是一种消息模式,发布者发布消息到某个信道,订阅者绑定这个信道,当有消息发布到这个信道时就会接收到一个通知,最主要的是,发布者和订阅者是完全解耦的,彼此并不知道对方的存在,两者仅共享一个自定义事件的名称。
   
// 以下是原码js实现的一个发布订阅

 var PubSub ={
        subscribe:function(ev,callback){
            //创建_callback对象,除非他已经存在了
            var call是= this._callbacks||(this._callbacks={});
           //针对给定的事件key创建一个数组,除非这个数组已经存在
           //然后将回调函数追加到这个数组中
            (this._callbacks[ev]||(this._callbacks[ev]=[])).push(callback);
             return  this;
        },
        publish,function(){
            //将arguments对象转换为真正的数组
            var args = Array.prototype.slice.call(arguments,0);

            //拿出第一个参数,即事件名称
            var  ev = args.shift();
            
             //如果不存在_callbacks对象则返回
             var list,calls,i,l;
             if(!(calls=this._callbacks)) return this;
             if(!(list=this._callbacks[ev])) return this;

             //触发回调
             for(var i=0,l=list.length;i
                list[i].apply(this,args);
                return this;
             }  
           }
  }
 

//使用方法
PubSub.subscribe("wem",function(){
         alert("wem!");
})

PubSub.publish("wem");


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值