【RxSwift】Error発生時の再度実行
Observable
でエラーが発生した時の再度実行に関するメモです🔰
retry, retryWhen
Observableでエラーが発生した場合、再度subscribeするには主にretry
・retryWhen
オペレーターが使えます。
retry
オペレータはシンプルで、エラーが発生した場合に無条件でObservableをsubscribeしなおします。下記の例では、3回目のエラーまではsubscribeし直され、それ以降はエラーが流れます。
repo .get() .retry(3)
retryWhen
オペレーターは、retry
と違い特定の条件でのみObservableをsubscribeし直します。下記の例では、エラーコードが400
の場合にリトライします。
repo .get() .retryWhen { (errors: Observable<ErrorType>) in return errors.flatMap { err -> Observable<Int> in let e = err as NSError if 400 = e.code { return .just(0) } return .error(err) } }
てな感じで本日も以上となります🍺