RxSwift-错误处理、重试-catchError、retry
catchError
当发送了error
事件后可以返回一个新的序列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| enum ObError: Error { case error1 }
let ob1 = PublishSubject<String>() let ob2 = PublishSubject.of("A", "B")
ob1.catchError { (error) -> Observable<String> in print(error) return ob2 }.subscribe { event in print(event) }.disposed(by: disposeBag) ob1.onNext("111") ob1.onError(ObError.error1) //next(111) //error1 //next(A) //next(B) //completed
|
retry
当发送了error
后可以重新发送
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var isFail = true let obs = Observable<String>.create { (ob) -> Disposable in ob.onNext("成功1") if isFail { ob.onError(ObError.error1) isFail = false } ob.onNext("重试成功") ob.onCompleted() return Disposables.create() }
obs.retry(2).subscribe { event in print(event) }.disposed(by: disposeBag)
next(成功1) next(成功1) next(重试成功) completed
|
- Post title:RxSwift-错误处理、重试-catchError、retry
- Post author:xxxixxxx
- Create time:2020-11-21 00:00:00
-
Post link:https://xxxixxx.github.io/2020/11/21/200-RxSwift-错误处理、重试-catchError、retry/
-
Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.