【问题标题】:RxJava and-then-whenRxJava 然后是什么时候
【发布时间】:2016-12-02 14:51:25
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android rx-java rx-android


    【解决方案1】:

    假设您有以下方法:

    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 中收到的异常类型。

    【讨论】:

      【解决方案2】:

      我希望这对你有用。

      https://github.com/darylteo/rxjava-promises/tree/master/rxjava-promises

      如果您需要代码示例进行改造 + rx 使用,您可以点击此链接。

      http://randomdotnext.com/retrofit-rxjava/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-15
        • 1970-01-01
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        相关资源
        最近更新 更多