emitter.ts 665 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { EventEmitter } from 'eventemitter3';
  2. export class Emitter {
  3. private emitter: EventEmitter;
  4. constructor() {
  5. this.emitter = new EventEmitter();
  6. }
  7. emit(name, data?) {
  8. this.emitter.emit(name, data);
  9. }
  10. on(name, handler, scope?) {
  11. this.emitter.on(name, handler);
  12. if (scope) {
  13. const unbind = scope.$on('$destroy', () => {
  14. this.emitter.off(name, handler);
  15. unbind();
  16. });
  17. }
  18. }
  19. removeAllListeners(evt?) {
  20. this.emitter.removeAllListeners(evt);
  21. }
  22. off(name, handler) {
  23. this.emitter.off(name, handler);
  24. }
  25. getEventCount(): number {
  26. return (this.emitter as any)._eventsCount;
  27. }
  28. }