MCPcopy Create free account
hub / github.com/clientdb/clientdb / createResolvablePromise

Function createResolvablePromise

core/utils/promises.ts:3–34  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1export type ResolvablePromise<T> = ReturnType<typeof createResolvablePromise<T>>
2
3export function createResolvablePromise<T = void>() {
4 let resolve: (value: T) => void;
5 let reject: (error: unknown) => void;
6 let didResolve = false;
7 let didReject = false;
8
9 function getIsComplete() {
10 return didResolve || didReject;
11 }
12
13 const promise = new Promise<T>((resolvePromise, rejectPromise) => {
14 resolve = (value) => {
15 if (getIsComplete()) return;
16 didResolve = true;
17 resolvePromise(value);
18 };
19 reject = (error) => {
20 if (getIsComplete()) return;
21 didReject = true;
22 rejectPromise(error);
23 };
24 });
25
26 return {
27 promise,
28 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
29 resolve: resolve!,
30 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
31 reject: reject!,
32 getIsComplete,
33 };
34}
35
36export function wait(time: number) {
37 return new Promise<void>((resolve) => {

Callers 1

addFunction · 0.90

Calls 1

getIsCompleteFunction · 0.85

Tested by

no test coverage detected