V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lrj2u
V2EX  ›  Java

rxjava 多状态,多条件的用法

  •  
  •   lrj2u · 2016-07-14 19:07:20 +08:00 · 3538 次点击
    这是一个创建于 3039 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有这么一个业务问题想请大牛指点下:

    现在用上了 rxjava + retrofit 开发点网络程序。

    我这里有某个服务 api ,请求后返回 4 个状态,每个状态都有对应的操作。 比如有的是继续请求另外的 api ,有的是执行数据保存等。

    请问用 rxjava 怎么把链条执行下去?

    7 条回复    2016-07-14 22:36:38 +08:00
    twoyuan
        1
    twoyuan  
       2016-07-14 20:14:40 +08:00
    根据状态码 flatMap ?非法状态可以直接在 Interceptor 那边映射成自定义的 Exception 然后统一处理
    lrj2u
        2
    lrj2u  
    OP
       2016-07-14 21:55:08 +08:00
    不是非法状态,都是正常的状态。 flatMap 怎么操作?有代码看看吗?
    因为每个状态都是操作不同的操作链。
    chocotan
        3
    chocotan  
       2016-07-14 22:02:56 +08:00
    Observable connectable = sourceObservalbe.publish()
    a.filter(状态 1).doOnNext...
    a.filter(状态 2).doOnNext...
    a.filter(状态 3).doOnNext...
    connectable.connect()

    大概像这样?
    chocotan
        4
    chocotan  
       2016-07-14 22:03:52 +08:00   ❤️ 1
    @chocotan 上面写错,第二行以后的 a.filter.. 应该是 connectable.filter...
    lrj2u
        5
    lrj2u  
    OP
       2016-07-14 22:20:36 +08:00
    @chocotan 这样似乎行不通啊,第一条 filter 的时候就把其它情况都过滤掉了。
    lrj2u
        6
    lrj2u  
    OP
       2016-07-14 22:30:32 +08:00
    刚才没看清楚, aa 后加了个 publish ,我在、再试试
    lrj2u
        7
    lrj2u  
    OP
       2016-07-14 22:36:38 +08:00
    @chocotan 只添加 publish() 还不行,还要添加一个链条: autoConnect(),如果有 4 个状态,就填 4 ,这样才会把 4 个 subscribe 都执行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1371 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:41 · PVG 01:41 · LAX 09:41 · JFK 12:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.