原生JS实现发布订阅功能

i奇异

关注

阅读 45

2022-02-16

var bus = {

  list: [],

  //订阅
  subscribe(callback) {
    this.list.push(callback)
  },

  //发布
  publish(text) {
    console.log('打印所有订阅者的方法:' + this.list)
    console.log('打印发布者的发布的数据:' + text)
    //遍历所有的list,将回调函数执行
    this.list.forEach((item) => {
      item && item(text)
    })
  },
}

//订阅者
bus.subscribe((callback) => {
  console.log('接收发布者的数据:', callback)
})

//发布者
setTimeout(() => {
  bus.publish('我发了一句话')
}, 0)

必须在发布之前订阅,否则订阅者接收不到数据

精彩评论(0)

0 0 举报