JavaRx on ErrorReturn 返回不同的类型

标签 java rx-java

Observable 与类型相关联。当 onError 时,我不想返回相同类型但不同的对象。状态 = 400 的响应对象示例。如何实现这一目标?

public class Test{
    @Autowired
    private Server server;

    public Response getResponse(String id){
        Observable<Person>  personObservable = server.get(id);
        ExecutorService executorService = Executors.newFixedThreadPool(100);

        List<Person> persons = new ArrayList<Person>();
        personObservable.onErrorReturn(new Func1<Throwable, Person>() {
        @Override
         public Person call(Throwable throwable) {
              //I would like to return a HttpResponseObject taking the message
              //from throwable error information how to do it?
              // How to use Transform() in this case ?
              return null;
         }
        }).subscribeOn(Schedulers.from(executorService)).subscribe(new Action1<Person>() {
            // If i use subscribe() will it be not async?
            // I think subscribe still run on the main thread so is this
            // subscribeOn use fine ?
            @Override
            public void call(Person person) {
                // Is this fine to use the list outside the observable ?
                persons.add(person);
            }
       });
        Response r = new Response;
        r.addPersons(persons);
        return r;
    }
}

最佳答案

使用onErrorResumeNext:

Observable<Person> personObservable = ...;
return personObservable
             .toList()
             .map(persons -> new Response(persons))
             .onErrorResumeNext(error -> new Response(error.getMessage())
             .toBlocking().single();

关于JavaRx on ErrorReturn 返回不同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618064/

相关文章:

Java PDFBox 为 PDF 表单中的几个字段设置自定义字体

java - 使用 Retrofit 时,当回复有时是对象有时是数组时,如何解析 JSON 回复?

java - 将填充的数组传递给公共(public)变量,以便它可以在其他类中使用

java - 从 REST-Assured 中的 XML 响应获取值

当我使用 -cp 时,Java 无法找到或加载主类

java - 如何使用 RxJava 2 创建异步事件总线?

java - RxJava2 concat() 只运行第一个 Observable

java - 如何在filter()之后使用flatMap()

java - Observable.concat 异常

java - 增加 TextView 的值,例如0为点击值+1