定义

一种消息范式,消息的发布者不会将消息直接发送给特定订阅者,而是通过消息通道广播出去,然后订阅者通过订阅获取想要的信息
image.png

场景

当一个模块完成后需要通知其它多个模块执行相应任务时

  1. const EventEmit = function() {
  2. this.events = {}
  3. this.on = function(name, cb) {
  4. if(this.events[name]) {
  5. this.events[name].push(cb)
  6. } else {
  7. this.events[name] = [cb]
  8. }
  9. }
  10. this.emit = function(name, ...args) {
  11. if(this.events[name]) {
  12. this.events[name].forEach(callBackFn => {
  13. callBackFn(...args)
  14. })
  15. }
  16. }
  17. }
  18. let event = new EventEmit()
  19. event.on('success', () => {
  20. console.log('监听到事件success完成去执行任务A')
  21. })
  22. event.on('success', () => {
  23. console.log('监听到事件success完成去执行任务B')
  24. })
  25. event.on('success', () => {
  26. console.log('监听到事件success完成去执行任务C')
  27. })
  28. event.emit('success')

输出

  1. 监听到事件success完成去执行任务A
  2. 监听到事件success完成去执行任务B
  3. 监听到事件success完成去执行任务C