Ben Lin
2025-03-07 ce374a9f4920a2d0e5ebe81a9872436088db6d55
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);
  };
};