diff --git a/src/index.ts b/src/index.ts index daefb5c..791b568 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,18 +18,26 @@ export interface IEvent { subscribe(callback: EventCallback): IDisposable } +const eventsCache = new Map() + export class Event implements IEvent { private _name: string - private _eventObject: EventEmitter = new EventEmitter() - - constructor(name?: string) { - this._name = name || "default_event" + private _eventObject: EventEmitter + + constructor(name: string) { + this._name = name + if (!eventsCache.has(name)) { + let emitter = new EventEmitter() + emitter.setMaxListeners(100) + eventsCache.set(name, emitter) + } + this._eventObject = eventsCache.get(name)! } public subscribe(callback: EventCallback): IDisposable { this._eventObject.addListener(this._name, callback) - + const dispose = () => { this._eventObject.removeListener(this._name, callback) }