mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-11-13 04:36:12 +01:00
19 lines
386 B
TypeScript
19 lines
386 B
TypeScript
import { use } from "react";
|
|||
|
|
|
||
|
|
const cache = new Map<string, Promise<unknown>>();
|
||
|
|
|
||
|
|
export function useAwait<Type>(
|
||
|
|
creator: () => Promise<Type>,
|
||
|
|
discriminator: string
|
||
|
|
) {
|
||
|
|
let promise;
|
||
|
|
|
||
|
|
if (cache.has(discriminator)) {
|
||
|
|
promise = cache.get(discriminator) as Promise<Type>;
|
||
|
|
} else {
|
||
|
|
promise = creator();
|
||
|
|
cache.set(discriminator, promise);
|
||
|
|
}
|
||
|
|
|
||
|
|
return use(promise);
|
||
|
|
}
|