【发布时间】:2017-01-04 12:53:07
【问题描述】:
我的 sort() 函数遇到了瓶颈,例如:
list.sort(function (a,b) {return (a.value - b.value);});
冻结浏览器几秒钟。
对于具有循环的相同情况,建议使用“超时”策略,例如此处描述的策略:
How to stop intense Javascript loop from freezing the browser
那么问题来了,能不能用sort方法来实现呢?
*在评论讨论后编辑
// main_div is a div defined before
for (let i=0; i<list.length; i++) {
main_div.appendChild(document.getElementById(list[i].id));
}
【问题讨论】:
-
数组中有多少个元素?有没有可能使用web worker
-
@JaromandaX 我现在正在调查它,几分钟前发现的,所以我不知道。这些元素现在就像 +500,但它们可能/将会更多
-
500 个元素将浏览器冻结 2 秒?你在 80386 上运行吗?
-
@JaromandaX 既然你这样说,可能冻结浏览器的原因是重新定位 DOM 节点而不是排序。但是,这个问题仍然相关,因为正如您所建议的那样,它涉及使用网络工作者。我正在查看html5rocks.com/en/tutorials/workers/basics 并尝试从stackoverflow.com/questions/3379875/… 之类的函数中获取 js_file,但到目前为止没有成功
-
@JaromandaX 但我也在运行 Chromebook,整个系统时不时会失去响应能力,因此排序也可能成为瓶颈
标签: javascript sorting freeze