1.发布订阅在很多地方很常见,其原理就是把想要执行的方法放到数组里面去,然后遍历数组执行里面的方法
其中把方法添加到数据叫订阅
遍历数组执行里面的方法叫发布
接下来,上代码
//发布订阅
function Dep(){
this.subs=[]
}
//订阅
Dep.prototype.addSub=function(sub){
this.subs.push(sub)
}
//执行
Dep.prototype.notify=function(){
this.subs.forEach((item)=>{
item.update()
})
}
//一个类,可以叫观察者
function Watch(fn){
this.fn=fn
}
Watch.prototype.update=function(){
this.fn()
}
let watcher=new Watch(()=>{
console.log(1)
})
let dep = new Dep()
dep.addSub(watcher) //订阅一次
dep.addSub(watcher) //再订阅一次
dep.addSub(watcher) //再订阅一次,最后这个方法会执行三次
dep.notify()