Skip to content

Instantly share code, notes, and snippets.

@semlinker
Created September 17, 2022 04:04
Show Gist options
  • Save semlinker/3ed57658b51667df884bfe22963099c4 to your computer and use it in GitHub Desktop.
Save semlinker/3ed57658b51667df884bfe22963099c4 to your computer and use it in GitHub Desktop.
Axios request retry
function retryAdapterEnhancer(adapter, options) {
const { times = 0, delay = 300 } = options;
return async (config) => {
const { retryTimes = times, retryDelay = delay } = config;
let __retryCount = 0;
const request = async () => {
try {
return await adapter(config);
} catch (err) {
// Check whether to retry
if (!retryTimes || __retryCount >= retryTimes) {
return Promise.reject(err);
}
__retryCount++; // Increase the number of retries
const delay = new Promise((resolve) => {
setTimeout(() => {
resolve();
}, retryDelay);
});
// Resend
return delay.then(() => {
return request();
});
}
};
return request();
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment