backoffDelay function

int backoffDelay(
  1. int attempt, {
  2. required int baseMs,
  3. required int maxMs,
  4. double jitter = 0.5,
  5. int minMs = 0,
  6. required double random(),
})

退避间隔(《sdk-web/2.功能概述文档》第 6.4 节):从 baseMs 开始逐次翻倍,最长 maxMs,每次加减 jitter 比例的随机量, 并且不短于 minMs。attempt 从 0 开始。

Implementation

int backoffDelay(int attempt, {required int baseMs, required int maxMs, double jitter = 0.5, int minMs = 0, required double Function() random}) {
  final raw = math.min(maxMs.toDouble(), baseMs * math.pow(2, math.min(attempt, 30)).toDouble());
  final delay = raw * (1 - jitter + random() * 2 * jitter);
  return math.max(delay.round(), minMs);
}