@modern-kit/utils
Version:
35 lines (32 loc) • 942 B
JavaScript
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