使用 knockout.js - 我需要对绑定到 HTML 表的 observableArray 进行排序。单击列标题将对数组 ASC 或 DESC 进行排序 - 非常常见的任务。
问题是排序会冻结 UI 大约 5 秒。我知道这是因为 JS 是单线程的。
我的问题是 - 是否有任何解决方法可以解决耗时的淘汰赛排序?我的意思是如何显示一些加载程序指示符或类似的东西?
使用 knockout.js - 我需要对绑定到 HTML 表的 observableArray 进行排序。单击列标题将对数组 ASC 或 DESC 进行排序 - 非常常见的任务。
问题是排序会冻结 UI 大约 5 秒。我知道这是因为 JS 是单线程的。
我的问题是 - 是否有任何解决方法可以解决耗时的淘汰赛排序?我的意思是如何显示一些加载程序指示符或类似的东西?
问题“解决了”——排序数组实际上非常快。问题是在页面上重新渲染 HTML 元素。
给其他用户的建议:对底层 JS 数组进行排序似乎(但我没有测量)比对 observable 数组进行排序要快一些,例如:
这更快:
anObsArray().sort(--sorting func here--); // notice brackets after name of anObsArray
anObsArray().valueHasMutated(); // <-- this line is important
比这个:
anObsArray.sort(--sorting func here--);