(feat): remove mtp loading screen
(fix): weird dedupe bugs (qol): update todo
This commit is contained in:
parent
8bff0f503f
commit
69149b73bd
6 changed files with 86 additions and 61 deletions
27
packages/shared/src/asyncQueue.ts
Normal file
27
packages/shared/src/asyncQueue.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
export default function createAsyncQueue<T>() {
|
||||
let resolve!: (value: T) => void;
|
||||
|
||||
const promise = new Promise<T>((r) => {
|
||||
resolve = r;
|
||||
});
|
||||
|
||||
return {
|
||||
set: resolve,
|
||||
get: () => promise,
|
||||
};
|
||||
}
|
||||
|
||||
// eslint-disable-next-line
|
||||
type AnyFn = (...args: any[]) => any;
|
||||
|
||||
export function createQueuedFunc<F extends AnyFn>(
|
||||
getFn: () => F | null | undefined,
|
||||
) {
|
||||
return (async (...args: Parameters<F>): Promise<Awaited<ReturnType<F>>> => {
|
||||
while (!getFn()) {
|
||||
await new Promise((r) => setTimeout(r, 50));
|
||||
}
|
||||
|
||||
return await getFn()!(...args);
|
||||
}) as F;
|
||||
}
|
||||
Loading…
Reference in a new issue