axios 触发axios-retry后,不管成功失败都会走then,这个问题该如何解决
时间: 2023-07-04 09:26:49 浏览: 216
axios-service:使axios更容易在代码中使用
可以在使用axios时,将重试的逻辑放在catch中,并在catch中手动抛出错误,使得不会走到后续的then中。代码示例:
```javascript
axios({
url: 'your/url',
method: 'post',
retry: 3, // 重试次数
retryDelay: 1000 // 重试延时
}).catch(error => {
const config = error.config;
if (!config || !config.retry) return Promise.reject(error);
config.__retryCount = config.__retryCount || 0;
if (config.__retryCount >= config.retry) {
return Promise.reject(error);
}
config.__retryCount += 1;
const delay = config.retryDelay || 0;
return new Promise(resolve => setTimeout(() => resolve(), delay)).then(() => axios(config));
}).then(response => {
// 成功的处理逻辑
}).catch(error => {
// 错误的处理逻辑
});
```
这样,在发生错误时就会直接跳到catch中,而不会继续执行then中的代码。
阅读全文