@modern-kit/utils
Version:
37 lines (33 loc) • 994 B
JavaScript
;
var validatorIsNumber = require('../../validator/isNumber/index.cjs');
var commonDelay = require('../delay/index.cjs');
const DEFAULT_RETRY = 3;
const DEFAULT_DELAY = 0;
const getRetryOptions = (options) => {
if (validatorIsNumber.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, 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 commonDelay.delay(delay);
}
}
throw error;
}
exports.retry = retry;
//# sourceMappingURL=index.cjs.map