* 计算退避延迟 * 使用指数退避算法
(attempt: number)
| 240 | * 使用指数退避算法 |
| 241 | */ |
| 242 | private getBackoffDelay(attempt: number): number { |
| 243 | const { backoffMultiplier, maxBackoffTime } = this.options.retry!; |
| 244 | const delay = Math.min(1000 * Math.pow(backoffMultiplier!, attempt), maxBackoffTime!); |
| 245 | // 添加随机抖动(±25%) |
| 246 | const jitter = delay * (0.75 + Math.random() * 0.5); |
| 247 | return Math.floor(jitter); |
| 248 | } |
| 249 | |
| 250 | /** |
| 251 | * 延迟函数 |