swiftuiux/retry-policy-service
The service creates sequence of the delays (nanoseconds) according to chosen strategy
SwiftUI example
Packages using the package
How to use
final class ViewModel : ObservableObject{
func constant() async {
let policy = RetryService(strategy: .constant())
for delay in policy{
try? await Task.sleep(nanoseconds: delay)
// do something
}
}
func exponential() async {
let policy = RetryService(
strategy: .exponential(
retry: 5,
multiplier: 2,
duration: .seconds(1),
timeout: .seconds(5)
)
)
for delay in policy{
try? await Task.sleep(nanoseconds: delay)
// do something
}
}
}
struct ContentView: View {
@StateObject var model = ViewModel()
var body: some View {
VStack {
Button("constatnt") { Task { await model.constant() } }
Button("exponential") { Task { await model.exponential() } }
}
.padding()
.task {
await model.exponential()
}
}
}TODO:
Exponential backoff with jitter. Jitter adds some amount of randomness to the backoff to spread the retries around in time. For more information Exponential Backoff And Jitter
Package Metadata
Repository: swiftuiux/retry-policy-service
Default branch: main
README: README.md