UNPKG

typed-utilities

Version:
58 lines (46 loc) 1.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Deferred = void 0; var _AsyncResult = require("./AsyncResult"); const defer = () => { let state = _AsyncResult.AsyncResult.of.pending(); let innerResolve = null; let innerReject = null; const promise = new Promise((resolve, reject) => { innerResolve = resolve; innerReject = reject; }); const resolve = value => { if (!_AsyncResult.AsyncResult.is.pending(state)) { throw new Error(`Deferred already settled`); } if (!innerResolve) { throw new Error(`innerResolve is not defined`); } state = _AsyncResult.AsyncResult.of.resolved(value); innerResolve(value); }; const reject = error => { if (!_AsyncResult.AsyncResult.is.pending(state)) { throw new Error(`Deferred already settled`); } if (!innerReject) { throw new Error(`innerResolve is not defined`); } state = _AsyncResult.AsyncResult.of.rejected(error); innerReject(error); }; return { state: () => state, reject, resolve, await: () => promise }; }; const Deferred = { defer }; exports.Deferred = Deferred; //# sourceMappingURL=Deferred.js.map