反应迟钝的脚本 - 有可能避免它吗?

时间:2012-05-23 09:03:13

标签: jquery

我有一个包含150行的列表,每行有三个带蒙皮的选择项。

因为在显示每个结果之前需要进行繁重的处理,所以我收到错误消息“此页面上的脚本可能正忙,或者它可能已停止响应。您可以立即停止脚本,或者您可以继续查看是否脚本将完成。“它指的是jquery.js文件。

通过做一些jQuery工作可以避免这个错误吗?

谢谢。

4 个答案:

答案 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,而不是下载它   全部在页面加载。

On Demand JavaScript

答案 3 :(得分:0)

网站性能大师Steve Souders在他的“更快的网站”一书中写到了这个问题以及如何解决这个问题。他描述了一种解决方案,您可以使用超时让其他进程获得一些时间。

Here's本书中涉及这些问题的部分。