我正在尝试在我的 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/