发布订阅
发布订阅在前端开发中随处可见,最简单的例子就是给元素绑定监听事件,绑定即为订阅,在适当的时机触发就是发布的一个过程
具体实现
在实际项目中,可以定义一个全局的发布订阅对象,用于处理所有订阅发布事件,这样的好处是便于管理以及节省变量空间,最基本的发布订阅需要三个方法: 1、发布 2、订阅 3、取消订阅
const PubSub = (function(){
const subscirbeObj: Record<string, Function[]> = {}
const subscibe = (key: string,callback: Function) => {
if (!subscirbeObj.hasOwnProperty(key)){
subscirbeObj[key] = []
}
subscirbeObj[key].push(callback)
}
const unSubscribe = (key: string) => {
if (subscirbeObj.hasOwnProperty(key)) {
subscirbeObj[key] = []
}
return
}
const publish = (key: string, data: any) => {
if (subscirbeObj.hasOwnProperty(key)){
for(let i = 0; i < subscirbeObj[key].length; i++){
subscirbeObj[key][i](data)
}
}
return
}
return {
subscibe,
unSubscribe,
publish
}
})()