threads
Version:
Web workers & worker threads as simple as a function call
25 lines (24 loc) • 613 B
JavaScript
const doNothing = () => undefined;
/**
* Creates a new promise and exposes its resolver function.
* Use with care!
*/
export function createPromiseWithResolver() {
let alreadyResolved = false;
let resolvedTo;
let resolver = doNothing;
const promise = new Promise(resolve => {
if (alreadyResolved) {
resolve(resolvedTo);
}
else {
resolver = resolve;
}
});
const exposedResolver = (value) => {
alreadyResolved = true;
resolvedTo = value;
resolver(resolvedTo);
};
return [promise, exposedResolver];
}