重试 0.6.2

Retry 0.6.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年9月
SwiftSwift 版本3.0
SPM支持 SPM

Marin Todorov 维护。



Retry 0.6.2

Retry

示例

你是否曾希望 try 在某些时候尝试更努力一些?来看看 retry

要运行示例项目,请首先克隆仓库,然后在 Example 目录中运行 pod install

完整的测试套件显示了各种使用场景。

同步重试

注意:同步 retry 不适用于主线程(因为如果你有延迟等,它将阻止主线程)。对于主线程,最好是考虑使用 retryAsync(更多信息见下文)。

默认参数 - 没有延迟重试三次

retry {
  ... do some throwing work ...
}

捕获最后一个错误,并在所有尝试完成后添加一个 defer 块 - 将重试最多 10 次。您可以使用最终块中的任何一个或两个

retry (max: 10) {
  ... do some throwing work ...
}
.finalCatch {lastError in
  print("This simply won't happen. Failed with: \(lastError)")
}
.finalDefer {
  print("Finished trying")
}

在重试之间添加 2 秒延迟

retry (max: 5, retryStrategy: .delay(seconds: 2.0)) {
  ... do some throwing work ...
}

实现任何自定义延迟逻辑(以下是在每次尝试后在等待时间上乘以的示例)

retry (max: 5, retryStrategy: .custom {count, lastDelay in return (lastDelay ?? 1.0) * 2.0} ) {
  ... do some throwing work ...
}

基于任何自定义逻辑限制重试次数 - 如果您从自定义策略中返回 nil,则 retry 将停止尝试

retry (max: 5, retryStrategy: .custom {count,_ in return count > 3 ? nil : 0} ) {
  ... do some throwing work ...
}

异步重试

retry 的语法完全相同。不同的行为是如果第一次尝试失败,retryAsync 将异步继续尝试,而不是阻塞当前线程。

安装

Retry 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中即可

pod "Retry"

由于 Retry 是 swift3 库,您必须将此代码段添加到项目的 Podfile 中,以更新目标的 swift 语言版本

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
            config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.10'
        end
    end
end

作者

Marin Todorov,2016 年至今

https://github.com/RxSwiftCommunity/RxSwiftExt 中的重试运算符的启发

许可证

Retry 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。