eventEmitter.js 854 B

123456789101112131415161718192021222324252627282930
  1. /* eslint-disable */
  2. function EventEmitter() {
  3. this.eventMap = {};
  4. }
  5. EventEmitter.prototype = {
  6. dispatchEvent: function dispatchEvent(name, payload) {
  7. const fns = this.eventMap[name] = this.eventMap[name] || [];
  8. if (fns && fns.length) {
  9. fns.forEach(fn => fn(payload));
  10. }
  11. },
  12. addEventListener: function addEventListener(name, callback) {
  13. const callbacks = this.eventMap[name] = this.eventMap[name] || [];
  14. if (callbacks.indexOf(callback) === -1) {
  15. callbacks.push(callback);
  16. }
  17. },
  18. removeEventListener: function removeEventListener(name, callback) {
  19. const callbacks = this.eventMap[name] = this.eventMap[name] || [];
  20. if (callbacks.indexOf(callback) !== -1) {
  21. this.eventMap[name] = callbacks.filter(d => d !== callback);
  22. }
  23. }
  24. };
  25. const EventHub = new EventEmitter();
  26. export default EventHub;