首页 > 解决方案 > 如何在 RxJava2 中的错误返回时发出多个项目?

问题描述

我想通过发出 2 个项目来处理异常。我想要类似的东西

handleHttpResponse(): Observable()
LoadingOn, LoadingOff, OnError(error): Item

aHttpObservable()
    .flatMap{ handleHttpResponse() }
    .startWith{ Observable.just(LoadingOn) }
    .concatWith{ Observable.just(LoadingOff) }
    .onErrorReturn{ error -> Observable.just(LoadingOff, OnError(error)) }

或者因为两者onCompleteonError我必须关闭加载对话框,我可以有类似的东西

aHttpObservable()
    .flatMap{ handleHttpResponse() }
    .startWith{ Observable.just(LoadingOn) }
    .onTerminate{ Observable.just(LoadingOff) }
    .onErrorReturn{ error -> OnError(error) }

我怎样才能做到这一点?谢谢。

标签: androiderror-handlingrx-java2

解决方案


采用onErrorResumeNext()

Observable.error(new RuntimeException("test"))
        .onErrorResumeNext(error -> {
            return Observable.just("a_message", error.toString());
        })
        .subscribe(System.out::println);

推荐阅读