码迷,mamicode.com
首页 > 其他好文 > 详细

手写一个发布订阅

时间:2020-07-15 15:47:31      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:cti   include   call   对象   发布订阅   struct   obj   png   scribe   

    1:所有的发布订阅就是一个对象。
技术图片

 

 

    class Obersve {
      event={}  //等价于下面的constructor
      // constructor() {
      //   this.event = {}
      // }
      subscribe(type, fn) { //订阅
        if (Object.keys(this.event).includes(type)) { 
          this.event[type].push(fn)
        } else {
          this.event[type] = [fn]
        }
      }
      publish(type, args = {}) {  //发布
        if (this.event[type]) {
          this.event[type].map(item => {
            item.call(this, { type,args}) 
          })
        }
      }
    }
    const ober = new Obersve()
    ober.subscribe(‘aaa‘, function (e) {
      console.log(`事件: ${e.type}`)
      console.log(`消息: ${e.args.message}`)
    })
    ober.publish(‘aaa‘, {
      message: ‘亮哥‘
    })

手写一个发布订阅

标签:cti   include   call   对象   发布订阅   struct   obj   png   scribe   

原文地址:https://www.cnblogs.com/binglove/p/13305054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!