2016-12-02 58 views
1

我想在我的Android应用程序中使用RxJava与Retrofit结合使用。RxJava然后当

我来到了一个点,我需要从某个模型类中检索(GET)一个url,如果它不可用,则POST到另一个端点以生成它,然后再次使用GET检索它。

这个想法是最终的结果总是一个url(当然,前提是没有错误),所以如果它不存在,我们创建它然后检索它。

我可以通过嵌套调用与RxJava做到这一点,但这似乎并不是“反应性”的,所以我想也许是什么时候听起来像是在寻找什么?我试图寻找例子,但这三个词很难搜索,因为它们很常见。

是否可以结合observables来实现我所描述的?

回答

0

让我们假设你有以下几种方法:

apiManager.makeGETRequest(); //returns Url or throws an Exception 
apiManager.makePOSTRequest(); //returns Url 

使用起来得心应手onErrorResumeNext操作:

apiManager.makeGETRequest() 
    .onErrorResumeNext(t -> apiManager.makePOSTRequest()) 
    ... 

它截获的ExceptionObservable替换它。在你的情况下,如果makeGETRequest()成功,则比下游将忽略onErrorResumeNext,否则将调用apiManager.makePOSTRequest()

P.S.不要忘记检查你在onErrorResumeNext收到的例外。