mirror of
https://github.com/whscullin/apple2js.git
synced 2024-01-12 14:14:38 +00:00
66f3e04d8e
The major impetus for rewriting in UI, at least. Still some ironing to do, but much nicer than my attempt to do this using the old UI "framework".
32 lines
886 B
TypeScript
32 lines
886 B
TypeScript
/**
|
|
* Converts a function type returning a `Promise` to a function type returning `void`.
|
|
*/
|
|
export type NoAwait<F extends (...args: unknown[]) => Promise<unknown>> =
|
|
(...args: Parameters<F>) => void;
|
|
|
|
/**
|
|
* Signals that the argument returns a `Promise` that is intentionally not being awaited.
|
|
*/
|
|
export function noAwait<F extends (...args: unknown[]) => Promise<unknown>>(f: F): NoAwait<F> {
|
|
return f as NoAwait<F>;
|
|
}
|
|
|
|
/**
|
|
* Utility class that allows a promise to be passed to a
|
|
* service to be resolved.
|
|
*/
|
|
|
|
export class Ready {
|
|
onError: (value?: unknown) => void;
|
|
onReady: (value?: unknown) => void;
|
|
|
|
ready: Promise<unknown>;
|
|
|
|
constructor(private errorHandler = console.error) {
|
|
this.ready = new Promise((resolve, reject) => {
|
|
this.onReady = resolve;
|
|
this.onError = reject;
|
|
}).catch(this.errorHandler);
|
|
}
|
|
}
|