繁体   English   中英

RxJava每次执行使用多个可观察(API调用)

[英]RxJava using multiple observable (api calls) per one execution

我有类似的东西:

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(......);
}

我如何运行两个可观察对象并在最后一个方法中对其进行订阅。 换句话说,我需要运行方法execute ,它将在每个Observable的UI结果中显示。

顺便说一下,Observable未连接,它们获取了不同的数据(所以我可以异步运行它们)

一种方法是使用flatMap

public void execute() {
    getFirstApiResponse()
            .flatMap(response1 -> {
                // getFirstApiResponse has completed
                // ...
                return getSecondApiResponse();
            })
            .subscribe(response2 -> {
                // getSecondApiResponse has completed
                // ...
            }, error -> {
                // One of the other operation has failed
            });
}

您也可以根据需要查看zip运算符。 该解决方案的缺点是,您不得不将响应组合成对或其他合适的数据结构,这可能对您没有意义。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM