总的来说,我仍然在研究 RAC 和 FRP——目前正在努力弄清楚如何实现我通常不得不在其他地方使用的模式。
假设我正在制作一个抽认卡应用程序,主屏幕是我的卡片组列表。这个应用程序使用网络服务器的状态作为事实来源。我不想每次显示屏幕时都从服务器重新获取此卡组列表 - 太好了,我可以在带有重播主题的多播信号中使用延迟网络请求来有效地记忆该列表。
我有两种方法可以通过从服务器重新获取来刷新此列表,这对我来说很复杂。我希望能够在应用程序中发生任何数量的事情时使这个“缓存”列表无效(例如,用户导航到其他屏幕并执行会使主屏幕上的牌组列表过时的操作,或者应用程序刚刚被重新唤醒,所以我们可以猜测它可能已经过时了),所以下次用户返回到这个主屏幕时,它一开始不会显示任何内容(而不是显示旧列表,因为它知道它是由于用户的操作而过期)并将重新获取列表,并在下载后显示它。我怎样才能最优雅地处理这种“无效”状态(希望没有实际状态)?
我还希望能够在超时时使“缓存”列表过期 - 基本上,甲板列表信号会给出缓存列表,直到足够的时间过去,此时它会在提供数据之前懒惰地发出网络请求。
我对如何实现这两件事有一些想法,但它们似乎有点令人费解。很想得到一些指导或被指出一些示例项目的方向。
我可以看到处理此问题的一种简单方法是拥有一个命令式服务层,并命令式处理缓存和缓存失效,并使用广播事件使缓存无效,然后从缓存返回或产生网络请求以填充缓存反应层尝试访问数据。如果不首先了解这样做的反应方式,我宁愿不遵循这种方法。
谢谢!