我想在浏览器窗口中运行一些计算,但我不希望它降低客户端计算机的速度以进行用户交互,尤其是对于单核计算机。有没有办法调整执行JavaScript的优秀级别,以便尽可能快地执行而不会降低机器的响应能力?
答案 0 :(得分:3)
除了推迟执行计算之外我什么也想不到。例如,将所有工作分成小块,然后在每个任务之间按顺序运行它们(使用setTimeout
或setInterval
)。
答案 1 :(得分:3)
创建开环......一个例子
这是一个闭环
for( i = 0 ; i < 10000 ; i++)
{
doSomeMath(i);
}
这是一个开环
i = 0;
iMax = 10000
var MyWorkingThread =
setInterval(function()
{
if( i < iMax)
{
doSomeMath(i);
i++;
}
else
{
clearInterval(MyWorkingThread);
}
},1);
你可以在开环中做更多或更少的工作,但这是一般的想法。对于类似的问题,我已多次这样做了,我让浏览器工作顺利。
答案 2 :(得分:2)
为了尝试使用单个多维数组来包含数据,然后在函数末尾使用单个连接将该数组转换为字符串,以便使用innerHTML方法输出和输出该数据。这是在JavaScript中包含和提供数据的最快方法。绝对不要使用DOM方法或元素来输出数据,因为这大约是慢4倍。
尽可能少地输出您的数据。这将取决于您用于执行功能的事件。我建议不要使用onload事件,因为这会减慢页面的初始加载时间。我建议使用与按钮关联的onclick功能,因为用户意识到它们导致执行速度降低了页面。
答案 3 :(得分:1)
我做了一些测试,浏览器需要相当长的一段时间才能做出合理的响应:
function work(cnt) {
// do some heavy work
for (var i=0;i<100000000;i++) ;
// start next work
if (cnt > 0) {
window.setTimeout(function(){work(cnt-1);},200);
}
}
答案 4 :(得分:1)