vue-admin-core
Version:
A Component Library for Vue 3
48 lines (44 loc) • 1.04 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
const useRetryPlugin = (fetchInstance, { retryInterval, retryCount }) => {
let timer = 0;
let count = 0;
let triggerByRetry = false;
if (!retryCount) {
return {};
}
return {
onBefore: () => {
if (!triggerByRetry) {
count = 0;
}
triggerByRetry = false;
if (timer) {
clearTimeout(timer);
}
},
onSuccess: () => {
count = 0;
},
onError: () => {
count += 1;
if (retryCount === -1 || count <= retryCount) {
const timeout = retryInterval != null ? retryInterval : Math.min(1e3 * 2 ** count, 3e4);
timer = setTimeout(() => {
triggerByRetry = true;
fetchInstance.refresh();
}, timeout);
} else {
count = 0;
}
},
onCancel: () => {
count = 0;
if (timer) {
clearTimeout(timer);
}
}
};
};
exports.default = useRetryPlugin;
//# sourceMappingURL=useRetryPlugin.js.map