getDelay method
计算第 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;
}
}