请求失败后如何优雅地重试三次?

程序猿胜楠 阅读 2

我在用 fetch 做 API 请求,网络偶尔不稳定,想加个重试机制,但不知道怎么写才不乱。试过在 catch 里再调一次,结果有时候会无限重试,或者状态没控制好。

比如下面这个简单的请求组件,该怎么加最多重试三次的逻辑?

<script>
async function fetchData() {
  const res = await fetch('/api/data');
  if (!res.ok) throw new Error('请求失败');
  return res.json();
}
</script>
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
文鑫的笔记
最简单的办法,给fetchData加个retry参数,在catch里递归调用直到次数用完:

async function fetchData(retry = 3) {
try {
const res = await fetch('/api/data');
if (!res.ok) throw new Error('请求失败');
return res.json();
} catch (err) {
if (retry <= 0) throw err;
console.log(重试剩余 ${retry} 次);
return fetchData(retry - 1);
}
}


调用的时候不用传参数,默认就试3次。试完还不行就抛出错误,外面再catch处理。
点赞
2026-03-05 23:04