Ben Lin
2024-10-22 e4f79a7e36214e5836cb0e667b3ffbd3db45456d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
type Listener = (data: any) => void;
 
const listeners: Record<string, Listener[]> = {};
 
export const trigger = (key: string, data: any) => {
  if (listeners[key]) {
    listeners[key].forEach((item) => item(data));
  }
};
 
export const subscribe = (key: string, listener: Listener) => {
  if (!listeners[key]) {
    listeners[key] = [];
  }
 
  listeners[key].push(listener);
 
  return function unsubscribe() {
    const index = listeners[key].indexOf(listener);
    listeners[key].splice(index, 1);
  };
};