Anh-Tuan Mai
Anh-Tuan Mai

Reputation: 1189

How to emit more than one item on error return in RxJava2?

I want to handle exception by emitting 2 items. I would like to have something like

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)) }

Or since both onComplete or onError I have to close the loading dialog, may I have something like

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

How can I do that? Thanks.

Upvotes: 0

Views: 157

Answers (1)

Tuby
Tuby

Reputation: 3253

Use onErrorResumeNext()

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

Upvotes: 1

Related Questions