美文网首页
EventEmitter简单实现

EventEmitter简单实现

作者: LElysion | 来源:发表于2019-03-14 14:15 被阅读0次

EventEmitter是什么

EventEmitter本质上是一个观察者模式的实现,所谓观察者模式。

正常包含两个基本实现, 观察者emit和被监听者on

简单实现

class EventEmitter {
  constructor() {
    if(!this.handles) {
      this.handles = Object.create(null);
    }
  }

  on(evt, cb) {
    if(!this.handles[evt]) {
      this.handles[evt] = [];
    }
    this.handles[evt].push(cb);
  }

  emit(evt, ...arg) {
    if(!!this.handles[evt]) {
      this.handles[evt].forEach((item, i) => {
        if(typeof item === 'function') {
          Reflect.apply(item, this, arg);
        } else {
          return console.error(`${item} is not a function in [${i}]`)
        }
      })
    }
  }
}

相关文章

  • EventEmitter简单实现

    EventEmitter是什么 EventEmitter本质上是一个观察者模式的实现,所谓观察者模式。 正常包含两...

  • EventEmitter class

    在Node中,要实现观察者模式非常的简单,而且内置于EventEmitter类中,EventEmitter类允许我...

  • RN的传值相关

    观察者模式 通过EventEmitter实现事件机制,实现简单的观察者模式。发送端、接受端同时需要引入Device...

  • angular6.x--其它

    EventEmitter实现自定义事件 通常,指令使用 Angular EventEmitter 来触发自定义事件...

  • 深度解析node的EventEmitter

    在使用EventEmitter的时候我们常用的方法主要有on、emit、once、off, 下面我们简单实现一下这...

  • 面试题

    实现一个promise 实现一个EventEmitter 观察者模式

  • events(事件触发器)

    一个简单的 EventEmitter 实例,绑定了一个监听器。 eventEmitter.on() 用于注册监听器...

  • Node中EventEmitter理解与简单实现

    背景 node的招牌技能是“事件驱动,非阻塞IO”,可以看到事件在node中的重要性。在浏览器端存在各种事件绑定(...

  • Tips of using RxJS

    Async EventEmitter Oh EventEmitter is Angular extension, ...

  • EventEmitter 用法

    import EventEmitter from 'events';window.eventEmitter = n...

网友评论

      本文标题:EventEmitter简单实现

      本文链接:https://www.haomeiwen.com/subject/qhiqmqtx.html