前端请求重试机制怎么避免无限循环?
我在做接口请求失败自动重试的功能,但有时候网络一直不好,重试就停不下来,页面直接卡死。我试过加个计数器限制重试3次,但代码写得有点乱,不确定是不是最佳实践。
比如现在用的是 fetch 封装的请求函数,重试逻辑写在 Promise 的 .catch() 里,但感觉控制不住递归深度。有没有更稳妥的方式?
const requestWithRetry = (url, retries = 3) => {
return fetch(url).catch(err => {
if (retries > 0) {
return requestWithRetry(url, retries - 1);
}
throw err;
});
};
Mr.巧梅
Lv1
问题在于递归调用没有处理 resolve 情况。改用 async/await 和 for 循环更清晰。
点赞
2026-03-22 19:02