RxJava2如何并行调用不同的请求

时间:2017-05-22 01:16:47

标签: android rx-java2

我真的很新,但我想做的是

两个并行调用都是对象,然后我需要使用两者的属性创建一个新对象

这是我需要的伪示例

OperatorINeed(service.callOne(), service.callTwo())
  .subscribeOn(Schedulers.io())
  .observeOn(AndroidSchedulers.mainThread())
  .concatMap(new BiFunction<ObjectA, ObjectB, ObjectC>() {
    public ObjectC apply(ObjectA objectA, ObjectB objectB) {
      // do things
      return objectC;
    }
  })
  onErrorResumeNext(...)

但我找不到这件事的具体例子

1 个答案:

答案 0 :(得分:0)

使用zip()运算符,它将收集将在parraell中运行的两个服务Observable的排放,并在那里提供BiFunction以将两个对象属性映射到新的单个对象,之后您可以concatMap()使用objectC

Observable.zip(service.callOne(), service.callTwo(),
            new BiFunction<ObjectA, ObjectB, ObjectC>() {
                @Override
                public ObjectC apply(ObjectA objectA, ObjectB objectB) throws Exception {
                    // do things
                    return objectC;
                }
            })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .concatMap(objectC -> { //create an Observable using objectC})
            .onErrorResumeNext(...)