eventEmitter.js 722 B

123456789101112131415161718192021222324252627282930
  1. var EventEmitter = {
  2. _events: {},
  3. dispatch: function (event, data) {
  4. if (!this._events[event]) { // 没有监听事件
  5. return;
  6. }
  7. for(var cb of this._events[event].values()) {
  8. cb(data);
  9. }
  10. //let arr = this._events[event].values();
  11. //arr.forEach(function (cb) {
  12. // cb(data);
  13. //})
  14. },
  15. subscribe: function (event, source, callback) {
  16. // 创建一个新事件数组
  17. if (!this._events[event]) {
  18. this._events[event] = new Map();
  19. }
  20. this._events[event].set(source, callback);
  21. },
  22. unsubscribe: function (event, source) {
  23. if(this._events && this._events[event]) {
  24. this._events[event].delete(source);
  25. }
  26. }
  27. };