Created
October 21, 2019 10:44
-
-
Save r-plus/07366d243594c098278be17d3f5f96e2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Observable { | |
/// maxAttemptまでdelay間隔をあけてリトライする | |
/// | |
/// - Parameters: | |
/// - maxAttempt: 最大リトライ回数 | |
/// - delay: 間隔 | |
/// - Returns: リトライしたObservable | |
func retry(_ maxAttempt: Int, delay: RxTimeInterval) -> Observable<Element> { | |
return retryWhen { (err: Observable<Error>) -> Observable<Int> in | |
return err.enumerated().flatMap { (count, err) -> Observable<Int> in | |
guard count < maxAttempt - 1 else { | |
return Observable<Int>.error(err) | |
} | |
let serialQ = SerialDispatchQueueScheduler(qos: .background) | |
return Observable<Int>.timer(delay, scheduler: serialQ) | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment