UNPKG

@cloudcome/utils-core

Version:
63 lines (62 loc) 1.46 kB
import { isPromise, isObject } from "./type.mjs"; function isPromiseLike(unknown) { return isPromise(unknown) || 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); } }; } export { createMinDelayPromise, isPromiseLike, promiseDelay, promiseShared, promiseTimeout, promiseWhen }; //# sourceMappingURL=promise.mjs.map