Event.ts 430 B

1234567891011121314151617181920212223
  1. export class Event<TArgs> {
  2. public listeners: Array<(args: TArgs) => void> = [];
  3. constructor(name: string) {
  4. }
  5. public subscribe(fn: ((args: TArgs) => void)) {
  6. this.listeners.push(fn);
  7. }
  8. public trigger(args: TArgs) {
  9. this.listeners.map(fn => fn(args));
  10. }
  11. public unsubscribe(fn: ((args: TArgs) => void)) {
  12. this.listeners = this.listeners.filter(f => f != fn);
  13. }
  14. }