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 = [];
|
}
|
}
|
}
|