Javascript 如何预防;此页面上的脚本导致Internet Explorer运行缓慢”;不更改注册表中的MaxScriptStatements?
我们正在使用Bing和/或Google javascript地图控件,有时会使用大量可动态更改的覆盖 我已经阅读并知道如何设置MaxScriptStations注册表项 问题是,我们不希望以编程方式在用户的计算机上设置此注册表项或任何其他注册表项,而是希望以其他方式实现相同的效果Javascript 如何预防;此页面上的脚本导致Internet Explorer运行缓慢”;不更改注册表中的MaxScriptStatements?,javascript,permissions,bing,Javascript,Permissions,Bing,我们正在使用Bing和/或Google javascript地图控件,有时会使用大量可动态更改的覆盖 我已经阅读并知道如何设置MaxScriptStations注册表项 问题是,我们不希望以编程方式在用户的计算机上设置此注册表项或任何其他注册表项,而是希望以其他方式实现相同的效果 还有别的办法吗?除了让脚本“更轻”之外,你几乎什么都做不了。试着分析它,找出最严重的挤压发生在哪里,然后试着优化这些部件,将它们分解成更小的部件,在前一个部件完成后调用下一个部件并超时,依此类推。基本上,每隔一段时间将
还有别的办法吗?除了让脚本“更轻”之外,你几乎什么都做不了。试着分析它,找出最严重的挤压发生在哪里,然后试着优化这些部件,将它们分解成更小的部件,在前一个部件完成后调用下一个部件并超时,依此类推。基本上,每隔一段时间将控制权交还给浏览器,不要在一次函数调用中处理所有内容。通常在循环的代码中会遇到长时间运行的脚本 如果您必须循环一个大的数据集合,并且它可以异步完成——类似于另一个线程,那么将处理移动到webworker() 如果您不能或不想使用webworker,那么您可以找到导致长时间运行脚本的主循环,您可以给它一个最大循环数,然后使用setTimeout使它返回给客户端 错误:(thingToProcess可能太大,导致脚本运行时间过长)
这确实是唯一的方法,但如果代码是递归的,有时这可能很难实现。
function Process(thingToProcess){
var i;
for(i=0; i < thingToProcess.length; i++){
//process here
}
}
function Process(thingToProcess, start){
var i;
if(!start) start = 0;
for(i=start; i < thingToProcess.length && i - start < 100; i++){
//process here
}
if(i < thingToProcess.length) //still more to process
setTimeout(function(){Process(thingToProcess, i);}, 0);
}
Process(myCollectionToProcess);