2013-11-20 158 views
0

我想循环所有我的表行并做一些验证,下面是我的代码。jQuery。每个导致浏览器挂起

$("#table > tr").each(function(idx, el) { 

// my calculations goes here, it will take 500 ms for each record   

}); 

这工作正常,当我做循环20-30行,如果我循环100 +记录,然后浏览器挂起。

我无法在此逻辑中使用setTimeout,有人可以帮我解决这个问题。提前致谢!!

+0

看到计算结果会很有帮助,500ms是很多时间。 –

+0

显示验证码。 –

+0

500ms * 100行= 50秒。如果我没有误解,大多数现代浏览器都允许JS不间断地运行30秒,这需要用户确认。所以你最好优化验证以节省更少的时间。 – J0HN

回答

0

当然你也可以添加setTimeout

$("#table > tr").each(function(idx, el) { 

    setTimeout(function() { validation(idx,el) }, 0); 

}); 

但我敢肯定,你在你的验证函数内一个错误的方式做事。 500 ms的同步代码在Web开发中太多了,特别是对于30秒的任务!我相信你可以做到异步或更优化。

+0

感谢您的回复,但seTimeout会停止执行.each()直到我们完成验证逻辑? – Nagesh

相关问题