首页 > 解决方案 > RxJava using multiple observable (api calls) per one execution

问题描述

I have something like:

private Single<List<Data>> getFirstApiResponse() {
    return Single.just(....)
         /////
         .subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread());
}

private Single<AnotherData> getSecondApiResponse() {
    return Single.just(....)
         /////
         .subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread());
}

public void execute() {
    //Here I need to run both observables one by one, and show result of each in View

   // Code exetuting both
   .subscribe(......);
}

How can I run two observables and subscribe on them in last method. In other words, I need to run method execute which will display in UI result of each Observables.

By the way, Observable not connected, they fetch different data (so I can run them asynchronous)

标签: androidobservablerx-java2subscriber

解决方案


您也可以查看zip运算符,具体取决于您的需要。此解决方案的缺点是您被迫将您的响应组合成一对或另一个合适的数据结构,这对您来说可能没有意义。

public void execute() {
    Single.zip(getFirstApiResponse(), getSecondApiResponse(), 
                (first, second) -> {
                    //now you have both
                    return Pair.of(first, second);
                }).subscribe(pair -> {/**do stuff**/});
    }

推荐阅读