【RxSwift】Observableエラーの取り回しをちょっと便利にする
本日はRxSwift Community
のAction
ライブラリを使った、便利なObservable
エラーの取り回しについて簡単に紹介したいと思います👷♀️
こんな時どうする?
Observable
で流れてくるError
を取得したいけど、Error
が流れてきた場合にストリームを中断したくない場合って結構ありますよね?そんな時、いつも僕は下記のようにResult
を使い、ストリームにError
イベントを流していました。
func hogeRequest() -> Observable<Result<String, Error>> { return .just(.success("hoge")) } func bind() { hogeRequest() .subscribe(onNext: { result in switch result { case .success(let hoge): // TODO: Success handle. case .failure(let error): // TODO: Error handle. } }) // ErrorはonNextに内包される .disposed(by: disposeBag) }
そんな、Error
処理分けがAction
を使うことで、下記のようにシンプルに分けて書くことができます✍️
func hogeRequest() -> Action<Void, String> { return .init { .just("") } } func bind() { let hogeRequest = hogeRequest() hogeRequest .elements .subscribe(onNext: { hoge in // TODO: Success handle. }) .disposed(by: disposeBag) hogeRequest .errors .toError() .subscribe(onNext: { error in // TODO: Error handle. }) .disposed(by: disposeBag) }
まだ使いこんでなく、わからない部分も多いので、またガッツリ使う機会があったら記事にしたいと思います👩🌾 てな感じで本日も以上となります🍺