当前位置:  开发笔记 > 编程语言 > 正文

Retrofit和RxJava:如何组合两个请求并获得对两个结果的访问权限?

如何解决《Retrofit和RxJava:如何组合两个请求并获得对两个结果的访问权限?》经验,为你挑选了1个好方法。



1> Maksim Ostro..:

据我了解 - 您需要根据另一个请求的结果发出请求并合并两个结果.为此,您可以使用此flatMap运算符变体:Observable.flatMap(Func1 collectionSelector,Func2 resultSelector)

返回一个Observable,它将指定函数的结果发送到源Observable和指定集合Observable发出的值对.在此输入图像描述

简单的例子,指出如何重写代码:

private Observable makeRequestToServiceA() {
    return Observable.just("serviceA response"); //some network call
}

private Observable makeRequestToServiceB(String serviceAResponse) {
    return Observable.just("serviceB response"); //some network call based on response from ServiceA
}

private void doTheJob() {
    makeRequestToServiceA()
            .flatMap(new Func1>() {
                @Override
                public Observable call(String responseFromServiceA) {
                    //make second request based on response from ServiceA
                    return makeRequestToServiceB(responseFromServiceA);
                }
            }, new Func2>() {
                @Override
                public Observable call(String responseFromServiceA, String responseFromServiceB) {
                    //combine results
                    return Observable.just("here is combined result!");
                }
            })
            //apply schedulers, subscribe etc
}

使用lambdas:

private void doTheJob() {
    makeRequestToServiceA()
            .flatMap(responseFromServiceA -> makeRequestToServiceB(responseFromServiceA),
                    (responseFromServiceA, responseFromServiceB) -> Observable.just("here is combined result!"))
            //...
}


为了实现必须重写所有代码的功能,请花点时间分析我的示例。
推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有