发布订阅

Posted liufeiran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发布订阅相关的知识,希望对你有一定的参考价值。

 1 <script type="text/javascript">
 2 //发布 emit  订阅 on 女生失恋:[‘哭‘,‘购物‘,‘吃‘]
 3 function Girl()
 4     this._events = 
 5 
 6 Girl.prototype.on = function(eventName,callback)
 7     if(this._events[eventName])//不是第一次
 8         this._events[eventName].push(callback); //失恋:[cry,eat,shopping]
 9     else
10         this._events[eventName] = [callback]; //失恋:[cry]
11     
12 ;
13 Girl.prototype.emit = function(eventName,...args)//用剩余运算符[我,你,他],在参数里叫剩余运算符
14     //[].slice.call(arguments,1);都不理想
15     //Array.from(arguments).slice(1);
16     if(this._events[eventName])
17         this._events[eventName].forEach(cb=>cb(...args));//在其他地方叫展开运算符
18         //this._events[eventName].forEach(cb=>cb.apply(this,args));
19     
20 ;
21 let girl = new Girl();
22 let cry = (who)=>console.log(who + ‘哭‘);;
23 let shopping = (who)=>console.log(who + ‘购物‘);;
24 let eat = (who)=>console.log(who + ‘吃‘);;
25 girl.on(‘失恋‘,cry);//失恋:[cry]
26 girl.on(‘失恋‘,eat);//失恋:[cry,eat]
27 girl.on(‘失恋‘,shopping);//失恋:[cry,eat,shopping]
28 
29 girl.emit(‘失恋‘,‘我‘);
30 
31 //一对多
32 //a:[fn,fn,fn]
33 </script>

 

以上是关于发布订阅的主要内容,如果未能解决你的问题,请参考以下文章

EventBus发布-订阅模式 ( 使用代码实现发布-订阅模式 )

redis中的订阅和发布详解

Redis发布订阅和Stream

从发布-订阅模式到消息队列

发布和订阅

redis发布订阅模式