RxSwift (8) 错误处理
来源:互联网 发布:骷髅项链淘宝 编辑:程序博客网 时间:2024/04/30 04:44
catchErrorJustReturn
发送错误信号的时候,转换为指定的信息 发送
func rx_catchErrorJustReturn() { let disposeBag = DisposeBag() let sequenceThatFails = PublishSubject<String>() sequenceThatFails .catchErrorJustReturn("haveError is timeout") .subscribe { print($0) } .disposed(by: disposeBag) sequenceThatFails.onNext("1") sequenceThatFails.onNext("2") sequenceThatFails.onNext("3") sequenceThatFails.onNext("4") sequenceThatFails.onError(RxError.timeout)}
打印结果:next(1)next(2)next(3)next(4)next(haveError is timeout)completed
catchErrorJustReturn
发生错误,返回另一个 序列 继续订阅
func rx_catchError() { let disposeBag = DisposeBag() let sequenceThatFails = PublishSubject<String>() let recoverySequence = PublishSubject<String>() sequenceThatFails .catchError { print("Error:", $0) return recoverySequence } .subscribe { print($0) } .disposed(by: disposeBag) sequenceThatFails.onNext("1") sequenceThatFails.onNext("2") sequenceThatFails.onNext("3") sequenceThatFails.onNext("4") sequenceThatFails.onError(TestError.test) recoverySequence.onNext("5")}
打印结果next(1)next(2)next(3)next(4)Error: test//发生错误信号,切换序列继续订阅next(5)
retry
遇见error事件进行重试,retry(3)重试3次,retry()无参重试一次
func rx_retry() { let disposeBag = DisposeBag() var count = 1 let sequenceThatErrors = Observable<String>.create { observer in observer.onNext("1") observer.onNext("2") observer.onNext("3") if count == 1 { observer.onError(TestError.test) print("Error encountered") count += 1 } observer.onNext("4") observer.onNext("5") observer.onNext("6") observer.onCompleted() return Disposables.create() } sequenceThatErrors .retry() .subscribe(onNext: { print($0) }) .disposed(by: disposeBag)}/*: ---- ## `retry(_:)`Recovers repeatedly from Error events by resubscribing to the `Observable` sequence, up to `maxAttemptCount` number of retries. [More info](http://reactivex.io/documentation/operators/retry.html) ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/retry.png) */
打印结果123Error encountered123456
0 0
- RxSwift (8) 错误处理
- RxSwift
- RxSwift
- RxSwift
- RxSwift
- RxSwift
- RxSwift
- RxSwift
- RxSwift
- RxSwift + MJRefresh 打造自动处理刷新控件状态
- RxSwift(一)
- RxSwift - API
- RxSwift - Why
- 什么是RxSwift?
- RxSwift学习心得
- php-8 错误处理,异常处理:
- 错误处理
- 错误处理
- 设计方法(原型法、敏捷开发)
- 深入MTK平台bootloader启动之【 lk -> kernel】分析笔记
- phongap、APICloud、ionic等app开发平台你都知道吗?
- 嵌入式linux菜鸟成长记(六)
- AndroidStudio集成Lombok插件
- RxSwift (8) 错误处理
- 项目的运行路径
- Android探索之旅(第八篇) 关于友盟分享在新浪微博中分享失败报“文件不存在”
- ViewPager切换动画的方法
- C++第二次实验-选择程序设计-项目2(本月有几天)
- 把数据导成excel表格 java
- JavaScript This 的六道坎
- C++作业2
- 数据库原理(第五版)学习笔记一(第一章、第二章)