错误处理

当错误发生时,我们怎么处理,这是个问题,以下是几种处理方式

  • 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

这两个都是同样的用法,就不一一举例。

results matching ""

    No results matching ""