6

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

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

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

谢谢你。

4

4 回答 4

6

您需要将您的处理分成多个部分,并通过使用 0 或 1 毫秒的 setTimeout 给浏览器一些时间来处理它们之外的事情。

一个非常简单的方法是使用异步库的forEachSeries方法:

async.forEachSeries(yourData, function(item, cb) {
    // process item
    async.nextTick(cb);
});

yourData可能是包含您的行的 jQuery 对象,然后item将是一行的 DOM 元素。

于 2012-05-23T09:09:45.253 回答
0

我不了解 jQuery(如果 jQuery 中有一些包装器可用),但是在 vanilla JS 中有 WebWorkers 的概念(除了 IE 之外的支持相当好 - 请参见此处)。

在这里,您为您的计算启动了一个额外的线程,它不会阻塞您的 UI 线程。当计算完成并且只剩下结果显示时,您将数据从工作线程发送到 UI 线程并仅显示结果。

有关详细信息,请查看MDN 教程

于 2012-05-23T09:12:51.097 回答
0

在需要时下载 JavaScript,而不是在页面加载时全部下载。

按需 JavaScript

于 2012-05-23T09:16:47.660 回答
0

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

这是本书中处理这个问题的部分。

于 2012-05-23T09:16:52.453 回答