2017-12-18 219 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()'相同)
相關問題