UNPKG

web-ui-pack

Version:
32 lines (31 loc) 936 B
export default function promiseWait(promise, ms, smartOrCallback = true) { let catchErr; let isResolved = false; let resCnt = 0; let back; promise .catch((err) => (catchErr = err)) .finally(() => { isResolved = true; ++resCnt === 2 && back && smartOrCallback(false); }); const p = new Promise((res, rej) => { const end = () => { ++resCnt === 2 && back && smartOrCallback(false); catchErr ? rej(catchErr) : res(promise); }; const a = setTimeout(end, ms); smartOrCallback && setTimeout(() => { if (isResolved) { clearTimeout(a); end(); } else if (typeof smartOrCallback === "function") { smartOrCallback(true); back = true; } }); }); return p; }