softkave-js-utils
Version:
JavaScript & Typescript utility functions, types, and classes
37 lines • 1 kB
JavaScript
import assert from 'assert';
import { isBoolean } from 'lodash-es';
export function getDeferredPromise() {
let pResolveFn;
let pRejectFn;
let isResolved;
const promise = new Promise((resolve, reject) => {
pResolveFn = resolve;
pRejectFn = reject;
});
const resolveFn = (value) => {
if (isBoolean(isResolved)) {
return;
}
isResolved = true;
assert(pResolveFn);
pResolveFn(value);
};
const rejectFn = (error) => {
if (isBoolean(isResolved)) {
return;
}
isResolved = false;
assert(pRejectFn);
pRejectFn(error);
};
const isDone = () => isBoolean(isResolved);
const isPromiseResolved = () => isResolved !== null && isResolved !== void 0 ? isResolved : false;
return {
promise,
isDone,
isPromiseResolved,
resolve: resolveFn,
reject: rejectFn,
};
}
//# sourceMappingURL=getDeferredPromise.js.map