
一句话承诺:两段代码实现指数退避 + 上限控制,稳健重试。

async function fetchWithRetry(url, max=5) {
let delay = 200; // ms
for (let i=1; i<=max; i++) {
try { return await fetch(url); }
catch (e) { if (i===max) throw e; }
await new Promise(r => setTimeout(r, delay));
delay = Math.min(delay * 2, 5000);
}
}func GetWithRetry(url string, max int) (*http.Response, error) {
delay := 200 * time.Millisecond
for i := 1; i <= max; i++ {
resp, err := http.Get(url)
if err == nil && resp.StatusCode < 500 { return resp, err }
if i == max { return resp, err }
time.Sleep(delay)
if delay < 5*time.Second { delay *= 2 }
}
return nil, fmt.Errorf("retry failed")
}项目 | 建议 |
|---|---|
最大重试 | 3-5 次 |
初始延迟 | 200ms |
上限 | 5s |
Web 性能测量:Lighthouse CLI 与关键指标采集。