定义
一种消息范式,消息的发布者不会将消息直接发送给特定订阅者,而是通过消息通道广播出去,然后订阅者通过订阅获取想要的信息
场景
当一个模块完成后需要通知其它多个模块执行相应任务时
const EventEmit = function() {
this.events = {}
this.on = function(name, cb) {
if(this.events[name]) {
this.events[name].push(cb)
} else {
this.events[name] = [cb]
}
}
this.emit = function(name, ...args) {
if(this.events[name]) {
this.events[name].forEach(callBackFn => {
callBackFn(...args)
})
}
}
}
let event = new EventEmit()
event.on('success', () => {
console.log('监听到事件success完成去执行任务A')
})
event.on('success', () => {
console.log('监听到事件success完成去执行任务B')
})
event.on('success', () => {
console.log('监听到事件success完成去执行任务C')
})
event.emit('success')
输出
监听到事件success完成去执行任务A
监听到事件success完成去执行任务B
监听到事件success完成去执行任务C