javascript中的发布/订阅模式

来源:互联网 发布:十大悖论知乎 编辑:程序博客网 时间:2024/05/29 13:13
   发布/订阅是一种消息模式,发布者发布消息到某个信道,订阅者绑定这个信道,当有消息发布到这个信道时就会接收到一个通知,最主要的是,发布者和订阅者是完全解耦的,彼此并不知道对方的存在,两者仅共享一个自定义事件的名称。
   
// 以下是原码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
原创粉丝点击