为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2019-12-25 15:55:30
我正在使用Javascript解析具有大约3500个元素的XML文件。我正在使用jQuery“每个”函数,但可以使用任何形式的循环。问题是循环执行时浏览器冻结了几秒钟。停止冻结浏览器而不降低代码速度的最佳方法是什么?$(xmlDoc).find("Object").each(function() {    //Processing here});
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

在处理之间设置一个超时,以防止循环周期耗尽所有浏览器资源。总共只需要花费几秒钟的时间来处理和遍历所有内容,这对于3500个元素而言并非不合理。


var xmlElements = $(xmlDoc).find('Object');


var processing = function() {

  var element = xmlElements.shift();


  //process element;


  if (xmlElements.length > 0) {

    setTimeout(processing, 5);

  }

}


processing();


查看完整回答
反对 回复 2019-12-25
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我会考虑将3500个元素从xml转换为JSON,或者甚至更好地将其上传到转换后的服务器,这样它就可以从getgo原生到JS。

这将最大程度地减少您的负载,并且也会使文件大小也变小。


查看完整回答
反对 回复 2019-12-25
  • 3 回答
  • 0 关注
  • 691 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信