zhengyiming
2025-03-28 8bb9173a95a87e3ceab4f48b5b34041af38b7c70
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class BaseListener<ListenerMap extends { [key: string]: any }> {
  listenerList: ListenerMap[] = [];
 
  fireEvent(eventName: keyof ListenerMap, ...data: any[]) {
    this.listenerList.forEach((listener) => {
      var callback = listener[eventName];
      callback && callback(...data);
    });
  }
}
 
type LifeRechargeListenerMap = {
  update: (store: any) => any;
};
 
export class LifeRechargeListener extends BaseListener<LifeRechargeListenerMap> {
  addListener(listener: LifeRechargeListenerMap) {
    this.listenerList.push(listener);
  }
 
  removeListener(listener?: LifeRechargeListenerMap) {
    if (listener) {
      var index = -1;
      for (var i = 0, len = this.listenerList.length; i < len; i++) {
        if (listener == this.listenerList[i]) {
          index = i;
        }
      }
      if (index > -1) {
        this.listenerList.splice(index, 1);
      }
    } else {
      this.listenerList = [];
    }
  }
}