制作我自己的事件投掷者

时间:2016-03-21 13:25:58

标签: javascript events javascript-events event-handling javascript-objects

现在我是个大男孩,我(大多数时候)知道如何应对生活在DOM中的那些动物的各种事件。

为了解决问题,我希望能够在适当时启动我自己的定制事件,我想我可以伪编码如下:

Panel

这个想法当然是在未来一段时间我可以实例化myObject,然后甚至可以用某些东西来监视它的行为

myObject = {
    prop:{ soAndSo }
    method : function(args){
        //do some stuff that takes forever
        "All done and ready, now tell the world"
    }
}

问题是,我不知道从哪里开始关于“现在告诉全世界”的部分。

你们的朋友会指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您需要创建一个虚假的eventEmitter。这是我在遵循Pluralsight的教程时所做的一个,名为React和Flux for Angular Developers: Tutorial

对于你的问题,你告诉世界'通过发出事件,这实际上是调用你拥有的所有活动监听器。

// make your own emitter:

function EventEmitter () {
  // holds events buy type; ex:'ADD_TODO'
  this._events = {};
}

EventEmitter.prototype.on = function(type, listener) {
  // add events to listen for
  this._events[type] = this._events[type] || [];
  this._events[type].push(listener);
};

EventEmitter.prototype.emit = function(type) {
  // emit event base on type
  if (this._events[type]) {
    this._event[type].forEach(function(listener) {
      // call listeners for events:
      listener();
    });
  }
};

EventEmitter.prototype.removeListener = function(type, listern) {
  if (this._events[type]) {
    this._events[type].splice(this._events[type].indexOf(listener), 1)
  }
};