2017-12-18 252 views
0

保存数据可以说地图的一个关键的价值),以便在所有请求完成后稍后处理。例如 可以说我想发出一些对某个API的调用,并在地图中保存所有失败的调用响应,以便稍后进行一些“错误更正”。 直到现在它看起来像我需要从上到下写整个流程来做这个请求 - >错误 - >纠正这是一个操作管道,我想分离到两个不同的操作发生在不同的时间。 我意识到我可能错过了rxjava的一个关键概念。RxJava和一些编码与rxjava它让你想在一个完全不同的方式,我仍然无法理解我应该怎么做时,我想要一些操作的一些数据保存在集合中(后收藏

总之我怎么之外缓存数据的集合在以后解决?只是在请求失败时将数据放入并发HashMap是好主意/练习?

在此先感谢

回答

0

一般来说,如果你要的副作用添加到RX链,你想使用doOnNextdoOnError - 可能是第二个为你的使用情况。您可以将其添加到Action1实施中的收藏中。

0

我在这里看到几个问题。正在从RX

  • 更改状态确实被称为副作用,且通常通过.doOn ...()方法来完成。
  • 处理在一个方法的成功和错误事件是通过施加.materialize()操作者来完成。在ConcurrentHashMap中
  • 保持状态是可能的,但你不会得到它正在更新的任何通知。
  • 所以我可能宁愿保持状态,在经由.scan()适用于您的更新对象物化响应流。
  • 结合所有反应成一个流,而无需重新订阅可以与.switchLatest()/完成。switchOnNext()运算符。请参阅RxSwift示例 - https://github.com/maxvol/RaspSwift/blob/master/RaspSwift/RaspAggregator.swift(RxSwift中的'.switchLatest()'与RxJava中的'.switchOnNext()'相同)
相关问题