我正在尝试在我的 Android 应用程序中结合使用 RxJava 和 Retrofit。

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

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

我可以通过嵌套调用来使用 RxJava 来做到这一点,但这似乎不是“ react 性”,所以我想也许 and-when-then 听起来像我正在寻找的东西?我试着寻找例子,但这三个词很难搜索,因为它们太常见了。

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

最佳答案

假设您有以下方法:

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

使用方便的 onErrorResumeNext 运算符:
apiManager.makeGETRequest()
    .onErrorResumeNext(t -> apiManager.makePOSTRequest())
    ...

它拦截 Exception 并将其替换为 Observable 。在您的情况下,如果 makeGETRequest() 成功,那么下游将忽略 onErrorResumeNext ,否则将调用 apiManager.makePOSTRequest()

附言不要忘记检查您在 onErrorResumeNext 中收到的异常类型。

关于android - RxJava 然后是什么时候,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40934962/

10-12 02:11