gradio
1type PromiseImplFn<T> = ConstructorParameters<typeof Promise<T>>[0];
2
3export class PromiseDelegate<T> {
4private promiseInternal: Promise<T>;
5private resolveInternal!: Parameters<PromiseImplFn<T>>[0];
6private rejectInternal!: Parameters<PromiseImplFn<T>>[1];
7
8constructor() {
9this.promiseInternal = new Promise((resolve, reject) => {
10this.resolveInternal = resolve;
11this.rejectInternal = reject;
12});
13}
14
15get promise(): Promise<T> {
16return this.promiseInternal;
17}
18
19public resolve(value: T): void {
20this.resolveInternal(value);
21}
22
23public reject(reason: unknown): void {
24this.rejectInternal(reason);
25}
26}
27