如何阻止激烈的Javascript循环冻结浏览器

我正在使用Javascript解析具有大约3500个元素的XML文件。我正在使用jQuery“每个”函数,但可以使用任何形式的循环。

问题是循环执行时浏览器冻结了几秒钟。停止冻结浏览器而不降低代码速度的最佳方法是什么?


$(xmlDoc).find("Object").each(function() {

    //Processing here

});


HUH函数
浏览 695回答 3
3回答

交互式爱情

在处理之间设置一个超时,以防止循环周期耗尽所有浏览器资源。总共只需要花费几秒钟的时间来处理和遍历所有内容,这对于3500个元素而言并非不合理。var xmlElements = $(xmlDoc).find('Object');var processing = function() {  var element = xmlElements.shift();  //process element;  if (xmlElements.length > 0) {    setTimeout(processing, 5);  }}processing();

江户川乱折腾

我会考虑将3500个元素从xml转换为JSON,或者甚至更好地将其上传到转换后的服务器,这样它就可以从getgo原生到JS。这将最大程度地减少您的负载,并且也会使文件大小也变小。
打开App,查看更多内容
随时随地看视频慕课网APP