首页 > 解决方案 > 处理 Observable.zip 响应

问题描述

我想并行调用两个服务调用并将响应填充到不同对象中以进行进一步处理,如下所示

Observable<O3> o3 = Observable.zip(o1, o2(ent, acct)-> { return new O3(ent,acct);});

只是想知道,处理响应的更好方法是什么?

 1 o3.toBlocking().single();

 2) List<O3> O3List;
    O3.subscribe(e -> {
        o3List.add(e);
       });
    O3List.get(0);

标签: javarx-javarx-java2

解决方案


看起来 o1 和 o2 实际上应该是 Singles (只产生一个元素)并且您希望 03 也是一个元素,在这种情况下您可以这样做

var result = Single.zip(
    o1.toSingle(), 
    o2.toSingle(),
   (o1Result, o2Result) -> new O3(o1Result, o2Result))
.blockingGet();

如果您使用的是 Rx java 2。


推荐阅读