我仍然圍繞着RAC和FRP一般 - 我正在努力弄清楚如何實現我通常不得不在其他地方使用的模式。ReactiveCocoa中的緩存失效
比方說,我正在製作一個閃存卡應用程序,主屏幕是我的一副撲克牌列表。這個應用程序使用網絡服務器的狀態作爲事實的來源。我不想在每次顯示屏幕時從服務器重新獲取此列表 - 非常好,我可以在帶有重播主題的多播信號中使用延遲網絡請求,以有效地記錄該列表。
我有兩種方法,這個列表應該通過從服務器重新獲取來刷新,這對我來說變得複雜了。我希望能夠在應用程序中發生任何數量的事情時使這個「緩存」列表失效(例如,用戶導航到其他屏幕並執行某些操作,使主屏幕上的套牌列表過時,或者應用程序剛剛被重新喚醒,所以我們可以猜測它可能已經過時了),以便下一次用戶返回到主屏幕時,它將不會顯示任何內容(而不是顯示舊列表,因爲它知道它是由於用戶的行爲而過時),並且將重新獲取列表,在下載之後顯示它。我怎樣才能最優雅地處理這種「無效」狀態(希望沒有實際狀態)?
我也希望能夠在超時時間內將「緩存」列表過期 - 基本上,甲板列表信號會給出緩存列表直到足夠的時間過去,此時它會懶惰地發出網絡請求提供數據。
我對如何實現這兩件事有一些想法,但他們似乎有點複雜。希望得到一些指導或指向某個示例項目的方向。
我可以看到處理這個問題的一個簡單方法是有一個必要的服務層,並且必須處理緩存和緩存失效,並使用廣播事件來使緩存無效並從緩存返回或產生網絡請求到當反應層嘗試訪問數據時填充緩存。如果不先理解這種做法的被動方式,我寧願不遵循這種方法。
謝謝!
跨張貼在這裏:https://github.com/ReactiveCocoa/ReactiveCocoa/issues/899 – aehlke
我愛答案由@kastiglione在該帖子中發佈。 – erikprice