首页 > 解决方案 > RxJava double doOnError 未显示

问题描述

我正在将 RxJava 与 Retrofit2 一起使用,试图通过多次调用来使用 API,但我想根据 API 调用显示不同的错误消息。因此,每当发生某些事情时,我传递给它的subscribe方法的错误,以及doOnError方法也会写入我想要的日志(下面的最后一个 doOnError 调用)。

当我想在第一个flatMap中设置一个doOnError方法时,问题就开始了。所以,当我尝试时,它应该显示一条消息......但它没有,它实际执行的是订阅方法中的消费者。

try {
    api = APIClient.getApiService();

    Single.fromCallable(() -> generateReport(reportInfo))
          .flatMap(report -> api.sendHashCode(new HashObject(report))
                .doOnError(t -> showMessage("THIS ERROR IS NOT SHOWN" + t.getMessage())))
          .flatMap(response -> api.getSMS(new Signature(response.getSignatureId())))
          .doOnError(t -> generateExceptionLog(t.getMessage()))
          .subscribeOn(Schedulers.io())
          .observeOn(AndroidSchedulers.mainThread())
          .subscribe(onSuccess, onError);
} catch (Exception e) {
        generateExceptionLog(e);
}

请问有什么帮助吗?

标签: androidretrofit2rx-javarx-android

解决方案


推荐阅读