UNPKG

@modern-kit/utils

Version:
35 lines (32 loc) 942 B
import { isNumber } from '../../validator/isNumber/index.mjs'; import { delay } from '../delay/index.mjs'; const DEFAULT_RETRY = 3; const DEFAULT_DELAY = 0; const getRetryOptions = (options) => { if (isNumber(options)) { return { count: options, delay: DEFAULT_DELAY, signal: void 0 }; } return { count: options?.count ?? DEFAULT_RETRY, delay: options?.delay ?? DEFAULT_DELAY, signal: options?.signal }; }; async function retry(func, options) { const { count, delay: delay$1, signal } = getRetryOptions(options); let error; for (let i = 0; i < count; i++) { if (signal?.aborted) { throw new Error("aborted\uB85C \uC778\uD574 \uC7AC\uC2DC\uB3C4 \uC791\uC5C5\uC774 \uC911\uB2E8\uB418\uC5C8\uC2B5\uB2C8\uB2E4."); } try { return await func(); } catch (err) { error = err; await delay(delay$1); } } throw error; } export { retry }; //# sourceMappingURL=index.mjs.map