2023了,你还不会手写发布订阅者模式吗?

27 阅读1分钟

发布订阅者模式包括发布人/订阅者/订阅中心

你可以想象这么一个场景,张三/李四/王五(订阅者)需要订报纸,邮局(订阅中心)提供订报纸服务,报纸发行商(发布者)提供报纸,当报纸发行商发行报纸时通知邮局,邮局在根据订阅数据通知各个订阅者。

代码实现

// on emit  客户在邮局订阅报纸,报纸发行方发行报纸邮局通知每一个订阅者

//订阅中心
 let e = {
  _callBack:[],
  on(callBack){
    this._callBack.push(callBack)
  },
  emit(value){
    this._callBack.forEach(method=>{
      method(value)
    })
  }
 }
//订阅者
 e.on(function(value){
  console.log('张三订阅:'+value)
 })
e.on(function (value) {
  console.log('李四订阅:' + value)
})
e.on(function (value) {
  console.log('王五订阅:' + value)
})

 //发布者
 e.emit('中央日报')