【发布时间】:2017-08-14 19:02:31
【问题描述】:
下面的代码片段,它的作用是搜索大约 100 个对象并检查我的查询是否与条目的标题匹配,一次一个字符。 输入任何字母时,它会冻结浏览器大约 5 秒钟,然后重新获得控制权。
片段:
results = _.filter(cmp.get('v.components'), function(item) {
return item.componentName.toLowerCase().indexOf(queryResult) != -1;
});
作为 Javascript 的新手,我在编写这段代码时已经遇到了一些问题,所以我对如何改进这一点有点不了解。我准备了一段代码,因此它会在获得结果后将其删除之前显示加载屏幕,但由于浏览器冻结,它不会显示任何内容。
顺便说一句,我们仅限于使用 Javascript 和 underscore.js,因此我们无法访问 jQuery 或其他库。
【问题讨论】:
-
以这种方式过滤仅 100 个对象不会导致任何明显的延迟。
cmp.get('v.components')到底是做什么的? -
我们使用 Salesforce 的 Lightning 作为框架,与组件、控制器和助手一起工作。它的作用是从组件脚本中获取对象并将其拉入帮助脚本
-
也许将
cmp.get('v.components')分配给上一行的一个变量,然后单步执行代码。这样你至少可以看到延迟是cmp.get还是_filter -
啊,是的,马上试试!
标签: javascript object search underscore.js