一个简单的 Swift 类,用于执行可以多次尝试的代码,直到放弃。
我最初构思并构建了这个库,当时在开发一个应用,我们通常会遇到一些令用户沮丧的错误,但这些错误可以通过重新运行某些代码片段来恢复。
当应用所依赖的服务出现间歇性故障时,可以使用此库来帮助提供更可靠的用户体验。
目前,请查看测试以了解基本用法。
当尝试诊断应用中问题和故障的根源时,重要的是要理解哪些故障点存在,以及其中哪些可以通过重试来恢复。因此,这个库提供了一种机制,通过这种机制,我们可以发现何时重试是值得的,何时不值得。
这可以通过实现以下回调来完成
onSuccess
// Use this to gauge whether retrying is ever effective
onSuccessAfterRetry
onRetryAttempt
onFinalFailure
这些可以在全局位置实现,并将应用于您的应用中所有 Retry
的调用。这使调用点保持简洁,并尽可能地减少复杂性。
有时,您可能希望在重试前插入一个短延迟。根据故障的来源,短延迟可能有助于提高重试成功的机会。我考虑过直接在库中包含此功能,但尚未发现自己有这种需求。您可以很容易地在自己的函数调用中做到这一点,甚至可以根据 attempt.currentAttempt
缩放延迟时间,以便在最终放弃之前增加每次后续重试的延迟。