2024-09-13 06:53:03 -07:00
|
|
|
type ResolveFn<T> = (result: T | PromiseLike<T>) => void;
|
|
|
|
type RejectFn = (error: Error) => void;
|
|
|
|
|
2019-06-23 03:35:23 -07:00
|
|
|
export interface IDeferredPromise<T> {
|
2024-09-13 06:53:03 -07:00
|
|
|
promise: Promise<T>;
|
|
|
|
resolve: ResolveFn<T>;
|
|
|
|
reject: RejectFn;
|
2019-06-23 03:35:23 -07:00
|
|
|
}
|
|
|
|
|
2024-09-13 06:53:03 -07:00
|
|
|
export function createDeferredPromise<T = void>(): IDeferredPromise<T> {
|
|
|
|
const deferred: Partial<IDeferredPromise<T>> = {};
|
|
|
|
deferred.promise = new Promise<T>((resolve, reject) => {
|
|
|
|
deferred.resolve = resolve;
|
|
|
|
deferred.reject = reject;
|
2019-06-23 03:35:23 -07:00
|
|
|
});
|
2024-09-13 06:53:03 -07:00
|
|
|
return deferred as IDeferredPromise<T>;
|
2019-06-23 03:35:23 -07:00
|
|
|
}
|