rxjava 多状态,多条件的用法

2016-07-14 19:07:20 +08:00
 lrj2u

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

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

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

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

3398 次点击
所在节点    Java
7 条回复
twoyuan
2016-07-14 20:14:40 +08:00
根据状态码 flatMap ?非法状态可以直接在 Interceptor 那边映射成自定义的 Exception 然后统一处理
lrj2u
2016-07-14 21:55:08 +08:00
不是非法状态,都是正常的状态。 flatMap 怎么操作?有代码看看吗?
因为每个状态都是操作不同的操作链。
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
2016-07-14 22:03:52 +08:00
@chocotan 上面写错,第二行以后的 a.filter.. 应该是 connectable.filter...
lrj2u
2016-07-14 22:20:36 +08:00
@chocotan 这样似乎行不通啊,第一条 filter 的时候就把其它情况都过滤掉了。
lrj2u
2016-07-14 22:30:32 +08:00
刚才没看清楚, aa 后加了个 publish ,我在、再试试
lrj2u
2016-07-14 22:36:38 +08:00
@chocotan 只添加 publish() 还不行,还要添加一个链条: autoConnect(),如果有 4 个状态,就填 4 ,这样才会把 4 个 subscribe 都执行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX