UNPKG

@cloudcome/utils-core

Version:
63 lines (62 loc) 1.67 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const type = require("./type.cjs"); function isPromiseLike(unknown) { return type.isPromise(unknown) || type.isObject(unknown) && typeof unknown.then === "function"; } async function promiseDelay(ms = 0, ctrl) { return new Promise((resolve) => { const t = setTimeout(resolve, ms); if (ctrl) { ctrl.signal.addEventListener("abort", () => { clearTimeout(t); resolve(); }); } }); } async function promiseTimeout(promise, ms) { const ctrl = new AbortController(); const result = await Promise.race([ promise, promiseDelay(ms, ctrl).then(() => { throw new Error("timeout"); }) ]); ctrl.abort(); return result; } function promiseWhen(condition, ms = 10) { return new Promise((resolve, reject) => { const check = () => { if (condition()) { resolve(); } else { setTimeout(check, ms); } }; check(); }); } function promiseShared(promise) { return new Promise((resolve, reject) => { promise.then(resolve, reject); }); } function createMinDelayPromise(ms) { const startTime = Date.now(); return async function end() { const endTime = Date.now(); const waitTime = ms - (endTime - startTime); if (waitTime > 0) { await promiseDelay(waitTime); } }; } exports.createMinDelayPromise = createMinDelayPromise; exports.isPromiseLike = isPromiseLike; exports.promiseDelay = promiseDelay; exports.promiseShared = promiseShared; exports.promiseTimeout = promiseTimeout; exports.promiseWhen = promiseWhen; //# sourceMappingURL=promise.cjs.map