vue-admin-core
Version:
A Component Library for Vue 3
44 lines (42 loc) • 963 B
JavaScript
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);
}
}
};
};
export { useRetryPlugin as default };
//# sourceMappingURL=useRetryPlugin.mjs.map