UNPKG

603 BJavaScriptView Raw
1const doNothing = () => undefined;
2/**
3 * Creates a new promise and exposes its resolver function.
4 * Use with care!
5 */
6export function createPromiseWithResolver() {
7 let alreadyResolved = false;
8 let resolvedTo;
9 let resolver = doNothing;
10 const promise = new Promise(resolve => {
11 if (alreadyResolved) {
12 resolve(resolvedTo);
13 }
14 else {
15 resolver = resolve;
16 }
17 });
18 const exposedResolver = (value) => {
19 alreadyResolved = true;
20 resolvedTo = value;
21 resolver();
22 };
23 return [promise, exposedResolver];
24}