发布订阅模式
之前学习的手写EventEmitter就是发布订阅模式,把实现的EventEmitter类的函数名称修改一下,就比较好理解了。on函数即subscribe函数用于注册事件订阅行为,emit函数即publish函数,用于发布者发布事件。订阅者通过subscribe进行订阅。
class PubSub{
constructor(){
//维护事件及订阅行为
this.events={};
}
//@param是对函数参数进行解释作用
/**
* 注册事件订阅行为
* @param {String} eventName 事件类型
* @param {Function} callback 回调函数
*/
subscribe(eventName,callback){
if (!this.events[eventName]) {
//该事件类型不存在,设置数组存放回调函数
this.events[eventName]=[]
}
//将回调函数放入该事件类型数组
this.events[eventName].push(callback);
}
// emit(eventName){
// //emit触发事件,把回调函数拉出来执行
// this.events[eventName] && this.events[eventName].forEach(callback => callback())
// }
/**
* 发布事件
* @param {String} eventName 事件类型
* @param {...any} args 参数列表,把emit传递的参数赋给回调函数