【发布时间】:2018-05-29 06:50:54
【问题描述】:
我有一个使用 firebase 查找大型数据集的 Angular 应用程序。我必须向用户显示一个下拉菜单,其中可能有 20k 个对象。
在不损失性能的情况下完成此类任务的最佳实践是什么?
我尝试了一些第三方下拉组件,例如:ngx-select 和 ngx-bootstrap's typeahead。一切都会导致我的网页冻结。
我正在寻找有关如何在不损失性能的情况下实现此类功能的建议。
【问题讨论】:
-
当用户停止输入时,您必须使用带有延迟加载搜索列表的自动完成 API。
-
看看here。它展示了@Prachi 提到的延迟加载技术。你基本上限制了进来的集合,并使用一个标志来表示集合的结束,以便获取更多信息。
-
This 可能会对您有所帮助。
-
@Prachi 就个人而言,我讨厌您所描述的大多数实施。大多数实现都尝试自动完成/实时输入正在输入的内容(即当用户输入而不是等待暂停时)。这通常会导致应用程序在必须处理大型数据集时冻结。至少,他们需要执行您提到的操作并等待用户停止输入。此外,此类实现应监控完成他们正在做的事情所花费的时间,并允许用户执行其他操作(这可能会使当前正在做的事情无效)。
-
@Makyen 您推荐的应对这种情况的方法是什么?