getDelay method

Duration getDelay(
  1. int attempt
)

计算第 attempt 次重试的延迟时间(从 0 开始计数)

Implementation

Duration getDelay(int attempt) {
  switch (strategy) {
    case RetryStrategy.fixed:
      return baseInterval;

    case RetryStrategy.exponentialBackoff:
      final delay = baseInterval * pow(backoffMultiplier, attempt).toInt();
      if (maxInterval != null && delay > maxInterval!) {
        return maxInterval!;
      }
      return delay;

    case RetryStrategy.exponentialBackoffWithJitter:
      final exponentialDelay =
          baseInterval * pow(backoffMultiplier, attempt).toInt();
      final jitter = Random().nextDouble() * exponentialDelay.inMilliseconds;
      final delay =
          Duration(milliseconds: (exponentialDelay.inMilliseconds + jitter) ~/ 2);
      if (maxInterval != null && delay > maxInterval!) {
        return maxInterval!;
      }
      return delay;
  }
}