27 lines
621 B
TypeScript
27 lines
621 B
TypeScript
type PromiseWithResolvers<T> = {
|
|
promise: Promise<T>;
|
|
resolve: (value: T | PromiseLike<T>) => void;
|
|
reject: (reason?: unknown) => void;
|
|
};
|
|
|
|
declare global {
|
|
interface PromiseConstructor {
|
|
withResolvers?<T>(): PromiseWithResolvers<T>;
|
|
}
|
|
}
|
|
|
|
if (typeof Promise.withResolvers !== "function") {
|
|
Promise.withResolvers = function withResolvers<T>(): PromiseWithResolvers<T> {
|
|
let resolve!: (value: T | PromiseLike<T>) => void;
|
|
let reject!: (reason?: unknown) => void;
|
|
const promise = new Promise<T>((res, rej) => {
|
|
resolve = res;
|
|
reject = rej;
|
|
});
|
|
return { promise, resolve, reject };
|
|
};
|
|
}
|
|
|
|
export {};
|
|
|