javascript - 在 ES6 中使用事件发射器的最简单方法

标签 javascript events ember.js

这是我当前的事件发射器实现。

class Table {

  set onDiscard(cb) {
    this._onDiscard = cb;
  }

  notifyDiscard(s) {
    if (this._onDiscard) {
      this._onDiscard(s);
    }
  }
}

在有多个事件的情况下,这会带来负担。

我可以使用什么库/功能/实现,以便将其简化为一行。

最佳答案

这是一个支持多个处理程序的简单方法:

class Table {
    on(type, cb) {
        this['_on' + type] = this['_on' + type] || [];
        this['_on' + type].push(cb);
    }

    emit(type, args) {
        this['_on' + type] && this['_on' + type].forEach((cb) => { cb(args) });
    }
}

var table = new Table();

table.on('started', function() { alert('started'); });
table.emit('started');

关于javascript - 在 ES6 中使用事件发射器的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30003865/

相关文章:

javascript - jQuery 动态主/子类别选择器

javascript - 扩展每个 html 元素

javascript - 液体火模态奇怪效果还是打开/关闭/打开?

ember.js - 如何在 Ember 1.0.0-RC3 中将 emberjs 对象转换为 JSON

ember.js - 使用标签扩展 TextField

javascript - Three.js - Sprite 和光

Javascript:防止空格键在指定的 div 中滚动

c - 事件未使用 ResetEvent() 重置

python - 从鼠标单击事件获取行和列

javascript - 重新加载 div 时的事件监听器