导入
流的组合入门
了解数据过滤的命令式和声明式模式。
现在我们已经学习了如何使用响应式模式以流的形式获取数据,并掌握了错误处理的模式,接下来就来实际操作一下流。RxJS 提供的一个最强大的工具就是流的组合,这也是本章的核心内容。
本章围绕一个常见的应用场景——数据过滤展开,我们将通过组合流的方式来解决这个问题。首先会说明需求,然后介绍实现该需求的经典命令式编程方式,最后再探讨使用声明式响应式模式的解决方案。
需求定义
我们希望根据某些条件对显示的食谱进行筛选,以进一步缩小结果范围。
从用户角度来看,用户将在“筛选条件”区域填写一些筛选条件,然后点击“查看结果”按钮,即可看到符合所填条件的结果。用户可以基于食谱标题中的关键词、食谱类别、食材、标签、准备时间以及烹饪时间进行筛选。在大多数展示数据集合的应用中,筛选功能都是必不可少的。
...
在实现筛选功能时,有多种策略可供选择,具体采用哪种策略取决于数据量的大小。如果你的数据量较小,并且全部数据都已加载到客户端,那么就没有必要进行服务端筛选。此时在客户端完成筛选更加高效,不会影响应用性能。
然而,如果数据量较大,则应采用懒加载机制,如分页、无限滚动或虚拟滚动等方式,以提升性能和用户体验。在这种情况下,由于客户端并未完整持有所有数据,因此必须依赖服务端筛选,这是不可避免的。
在我们的示例应用中,总共只有 11 个食谱,属于小规模数据场景,因此将采用客户端筛选。但接下来要讨论的响应式模式并不局限于某种特定的筛选方式,它既适用于客户端筛选,也适用于服务端筛选。