事件发布订阅模式?
可以认为JavaScript本身就是事件驱动型语言,比如,应用中对一个button进行了事件绑定,用户点击会触发按钮上面的click事件,是因为此时有特定程序正在监听这个事件,随之触发了相关的处理程序。
简单实现这样的模式
class Notify {
constructor() {
this.subscribers = []
}
add(handler) {
this.subscribers.push(handler)
}
emit() {
this.subscribers.forEach(subscriber => subscriber())
}
}
使用时
let notify = new Notify()
notify.add(() => {
console.log('emit here')
})
notify.emit()
这就是一个简单实现的“事件发布订阅模式”,只是启发思路。
网友评论