前端接口失败重试怎么做才不会重复请求?
我在做用户登录功能,网络不稳定时想加个重试机制,但发现有时候会连续发好几次一样的请求,比如用户点一次登录,结果因为重试发了三次。我试过用 axios 的拦截器加 retry 逻辑,但没控制好并发。
现在用的是这种简单写法:
const request = (url, options) => {
let retries = 0;
const maxRetries = 3;
const attempt = () => {
return fetch(url, options).catch(err => {
if (retries < maxRetries) {
retries++;
return attempt();
}
throw err;
});
};
return attempt();
};
但这样每次调用 request() 都会新建一个 retry 实例,如果用户快速点击多次,就会同时跑好几个重试流程。有没有办法在组件层面或者请求层面对同一个请求做去重 + 重试?
暂无解答