RxJava的新手。试图实现一些琐碎的事情,但到目前为止似乎还无法绕过整个RxJava范式。我想要做的是一个接一个地进行两个服务调用,然后简单地返回一个最终的自定义POJO,该响应由两个调用的响应组成。这里要注意的是,这两个调用是相互独立的。仅当第一个呼叫成功返回时,第二个才应触发。第二个不使用第一个服务调用中的任何数据。我到目前为止所拥有的。

 RestWebClient.get().getFirstImage()
                .flatMap(firstImage -> RestWebClient.get().getSecondImage())
                .subscribeOn(Schedulers.newThread())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(firstImage -> mainFragmentPresenterInterface.showImages(firstImage));



我不确定如何链接两个单独的网络调用的响应,并将它们作为单个POJO返回给演示者。
另外,如何确保只有在getFirstImage()成功的情况下才能调用getSecondImage()?


谢谢。

最佳答案

您开始正确,我将对您的代码片段进行一些修改:

RestWebClient.get().getFirstImage()
        .flatMap(firstImage -> /* first image success */ ? RestWebClient.get().getSecondImage() : Observable.just(null),
                (firstImage, secondImage) -> Pair.create(firstImage, secondImage))
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(imagePair -> mainFragmentPresenterInterface.showImages(imagePair));

10-07 20:47