Skip to content

Commit

Permalink
feat: support multiple subscribe for the same event
Browse files Browse the repository at this point in the history
  • Loading branch information
wewoor committed Oct 22, 2020
1 parent e40c364 commit 84ce57a
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions src/common/event.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
export class EventEmitter {
private _events = new Map<string, Function[]>();

public emit<ArgsType = any>(name: string, args: ArgsType) {
const events = this._events.get(name);
if (events && events.length > 0) {
// The log for development
console.log('event emit:', name, args);
events.forEach((callEvent) => {
callEvent(args);
});
}
}

public subscribe<T = any>(name: string | string[], callback: Function ) {
if (Array.isArray(name)) {
name.forEach((key: string) => {
this.assignEvent(key, callback);
});
} else {
this.assignEvent(name, callback);
}
// The log for development
console.log('event on:', name);
}

public assignEvent<T>(name: string, callback: Function) {
const event = this._events.get(name);
if (event) {
event.push(callback);
} else {
this._events.set(name, [callback] );
}
}
}

0 comments on commit 84ce57a

Please sign in to comment.