ant-design/.dumi/hooks/useFetch/cache.ts
MadCcc d1f8b500df
perf: better async component (#43982)
* perf: better async component

* feat: useFetch

* chore: code clean

* chore: code clean

* chore: fix lint

* type: enhance
2023-08-03 14:45:51 +08:00

22 lines
479 B
TypeScript

export default class FetchCache {
private cache: Map<string, PromiseLike<any>> = new Map();
get(key: string) {
return this.cache.get(key);
}
set(key: string, value: PromiseLike<any>) {
this.cache.set(key, value);
}
promise<T>(key: string, promiseFn: () => PromiseLike<T>): PromiseLike<T> {
const cached = this.get(key);
if (cached) {
return cached;
}
const promise = promiseFn();
this.set(key, promise);
return promise;
}
}