总是被发布订阅模式这么高大上的名字吓唬,,才发现,很简单的就实现了。其实浏览器的点击事件绑定同样是发布订阅模式。
将新的代码推入队列,依次进行订阅。
将订阅的代码队列先入后出顺序执行。
// 一个简单的事件订阅发布的实现,取代原始Event对象,提升IE下的兼容性
class LoadEvent {
constructor () {
this.listeners = {}
}
on (eventName, callback) {
this.listeners[eventName] === undefined ? this.listeners[eventName] = [] : ''
this.listeners[eventName].push(callback)
}
emit (eventName) {
this.listeners[eventName] && this.listeners[eventName].forEach(callback => callback())
}
}