错误处理
当错误发生时,我们怎么处理,这是个问题,以下是几种处理方式
- onErrorResumeNext
- onErrorReturn
- onErrorReturnItem
- retry
Observable.just(5, 2, 4, 0, 3, 2, 8)
.map { i -> 10 / i }
.onErrorResumeNext(Observable.just(-1))
.subscribe({ i -> println("RECEIVED: " + i!!) }
) { e -> println("RECEIVED ERROR: $e") }
其他的方法类似,就不一一试了
doOnNext
他可以监听每个,观察源,然后进行下一个,频率和subscribe 是一样的,这个操作并不影响这个操作或者转变这个操作,只是默默的监听
Observable.just("Sdsd", "sdsagr", "sdsf23")
.doOnNext { println("This next is $it") }
.map { it.length }
.subscribe { println("This is $it") }
doOnComplete
当所有的事件都执行完以后,就会调用doOnComplete 这个监听,
Observable.just("adsdsd", "sdsd", "sdsd").doOnComplete {
println("this is very good for you.")
}.subscribe { println("$it") }
doOnError
监听错误,
Observable.just("adsdsd", "sdsd", "sdsd").map { it.toLong() }
.doOnError { println("this is very good for you.") }
.subscribe { it.toLong() }
doOnSubscribe
监听OnSubscribe
Observable.just("adsdsd", "sdsd", "sdsd")
.doOnSubscribe { println("it is subscribe!") }
.subscribe { println("This is test for $it") }
- doOnDispose
- doOnSuccess
这两个都是同样的用法,就不一一举例。