iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【RxSwift】Error発生時の再度実行

Observableでエラーが発生した時の再度実行に関するメモです🔰

retry, retryWhen

Observableでエラーが発生した場合、再度subscribeするには主にretryretryWhenオペレーターが使えます。

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)
        }
    }

てな感じで本日も以上となります🍺

その他の記事

yamatooo.blog

yamatooo.blog

yamatooo.blog