我有一个包含150行的列表,每行有三个带蒙皮的选择项。
因为在显示每个结果之前需要进行繁重的处理,所以我收到错误消息“此页面上的脚本可能正忙,或者它可能已停止响应。您可以立即停止脚本,或者您可以继续查看是否脚本将完成。“它指的是jquery.js文件。
通过做一些jQuery工作可以避免这个错误吗?
谢谢。
答案 0 :(得分:6)
您需要将处理拆分为多个部分,并通过使用0或1毫秒setTimeout为浏览器提供一些时间做东西。
一种非常简单的方法是使用forEachSeries
库的async方法:
async.forEachSeries(yourData, function(item, cb) {
// process item
async.nextTick(cb);
});
yourData
可以是包含行的jQuery对象,然后item
将是一行的DOM元素。
答案 1 :(得分:0)
我不知道jQuery(如果jQuery中有一些包装器),但在vanilla JS中有WebWorkers的概念(支持相当不错,除了IE - 参见here)。
在这里,您可以为计算启动一个额外的线程,这不会阻止您的UI线程。完成计算后,只剩下结果显示,将数据从工作人员发送到UI线程,然后显示结果。
有关详细信息,请查看MDN tutorial。
答案 2 :(得分:0)
在需要时下载JavaScript,而不是下载它 全部在页面加载。
答案 3 :(得分:0)
网站性能大师Steve Souders在他的“更快的网站”一书中写到了这个问题以及如何解决这个问题。他描述了一种解决方案,您可以使用超时让其他进程获得一些时间。
Here's本书中涉及这些问题的部分。