发布订阅就是:无论何时当我们在a
处发送了消息,订阅过a
处消息的地方都可以接收到发送的消息。
let corp = {} // 自定义一个对象
// 这里放一个列表用来缓存回调函数
corp.list = []
// 去订阅事件
corp.on = function (fn) {
// 二话不说, 直接把fn先存到列表中
this.list.push(fn)
};
// 发布事件
corp.emit = function () {
// 当发布的时候再把列表里存的函数依次执行
this.list.forEach(cb => {
cb.apply(this, arguments)
})
}
发布订阅其实是一种对象间一对多的依赖关系, 当一个对象的状态发生改变时, 所有依赖于它的对象都将得到状态改变的通知。