mirror of
https://github.com/murashit/codex-panel.git
synced 2026-07-22 06:57:10 +00:00
27 lines
670 B
TypeScript
27 lines
670 B
TypeScript
export interface Deferred<T> {
|
|
promise: Promise<T>;
|
|
resolve: (value: T) => void;
|
|
reject: (error: unknown) => void;
|
|
}
|
|
|
|
export function deferred<T>(): Deferred<T> {
|
|
let resolve!: (value: T) => void;
|
|
let reject!: (error: unknown) => void;
|
|
const promise = new Promise<T>((promiseResolve, promiseReject) => {
|
|
resolve = promiseResolve;
|
|
reject = promiseReject;
|
|
});
|
|
return { promise, resolve, reject };
|
|
}
|
|
|
|
export async function waitForAsyncWork(assertion: () => void): Promise<void> {
|
|
for (let attempt = 0; attempt < 20; attempt += 1) {
|
|
try {
|
|
assertion();
|
|
return;
|
|
} catch {
|
|
await Promise.resolve();
|
|
}
|
|
}
|
|
assertion();
|
|
}
|