我在javascript中运行一个循环,大约需要一分钟才能完成。当我单击应该激活循环的链接时,页面不会加载任何内容,但是当我对循环进行注释时,print语句会起作用。 javascript是否只知道这个过程需要一段时间而不是这样做,如果确实存在,那么无论如何都要让它不这样做?谢谢! PS这里是代码(脚本数组超过60000个条目):
function magic(charnumber) {
var count = 1;
alert(charnumber);
var output = "";
for (count; count < scriptAr.length; count += 4) {
if (scriptAr[count] < charnumber and sriptAr[count + 1] > charnumber) {
output = output + scriptAr[count + 2] + '\n';
}
}
alert(charnumber);
}
答案 0 :(得分:11)
我认为它因语法错误and
而失败应该是&&
。
答案 1 :(得分:3)
我认为这是特定于浏览器的设置。在Firefox中,您可以通过转到地址栏并键入about:config
然后搜索dom.max_script_run_time
来更改它,这代表Firefox会在脚本告诉您没有响应之前尝试让脚本运行多少秒。
答案 2 :(得分:2)
我认为AnthonyWJones是正确的:上面的&&
语法错误。除此之外,需要使用哪些浏览器?如果您可以限制对现代浏览器的支持,您可以查看WebWorkers,我认为这可以在最新的Chrome,Safari,Firefox等上运行。这绝对是一种更加用户友好的方法,因为它不会阻止GUI线程可能是您当前的代码。
答案 3 :(得分:2)
if(scriptAr[count]<charnumber and sriptAr[count+1]>charnumber)
那应该是“&amp;&amp;”而不是“和”
答案 4 :(得分:0)
正如其他评论者指出的那样,这取决于浏览器。
我不确定它是否适用于您的实例,但解决问题的一种常见方法是将任务分解为较小的块,并通过调用setTimeout()分隔一系列函数间隔很小。
这样做的效果是在返回到你正在做的事情之前将控制权交还给浏览器一两秒钟,阻止它对脚本运行太长时间不知所措。