Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/replay/shared/utils/promise.ts
2659 views
1
export default function getResolvable<T>() {
2
let resolveCb: (obj: T | PromiseLike<T>) => any;
3
let rejectCb: (err: Error) => any;
4
let isResolved = false;
5
const promise = new Promise<T>((resolve, reject) => {
6
resolveCb = resolve;
7
rejectCb = reject;
8
});
9
return {
10
resolve: (entry: T | PromiseLike<T>) => {
11
if (isResolved) return;
12
isResolved = true;
13
return resolveCb(entry);
14
},
15
reject: (err?: Error) => {
16
if (isResolved) return;
17
isResolved = true;
18
return rejectCb(err);
19
},
20
isResolved,
21
promise,
22
};
23
}
24
25