javascript - 如何防止慢速脚本警告并强制浏览器继续运行脚本直到完成?

标签 javascript


更新(2013 年 7 月 5 日):

自从我最初提出这个问题以来,我学到了很多东西。在下面的一条评论中,有人建议我重新处理该任务并找到一种方法来解决它而不会有阻塞 UI 的风险。我说不可能,函数必须按原样运行。我实际上不记得我试图用这个函数完成什么,但我确信评论者是对的,而我错了。如果您偶然发现了这个问题并且遇到了与我相似的情况,那么请非常认真地考虑您的方法存在缺陷的可能性。

您可能还想查看 web workers .

Here is where you can expect them to work.


原始问题:

我不会过于具体地针对我的问题,我会保留它的通用性,以便其他偶然发现它的人可以发现它有用。

我有一个函数接受一个参数,一个字符串。如果字符串很短,函数运行良好并及时完成。但是,如果传入的字符串太长,脚本会运行一段时间,然后最终超时并返回浏览器的慢速脚本对话框,允许用户终止脚本。

我想防止这种情况发生,以便脚本可以继续到它的终点。

如何做到这一点?

旁注:如果我能让它正常工作,我还想制作一个状态栏,类似于您在加载 gmail 时看到的状态栏,这样用户就可以知道正在发生的事情。

谢谢!

最佳答案

您可以尝试不完全阻塞 UI,并使用 setTimeout 使其“在另一个线程中”运行。

window.setTimeout(function() { ... code ... }, 0);

我说“在另一个线程中”是因为JS中没有真正的多线程,here是一篇关于它的好文章


编辑:(使这个答案与网络技术保持同步)

您还可以使用 HTML 5 Web Workers 取决于 browser you are targeting

关于javascript - 如何防止慢速脚本警告并强制浏览器继续运行脚本直到完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6598285/

相关文章:

javascript - 通过鼠标单击更改 div 的样式,然后通过第二次单击将其改回

javascript - 为什么这个函数返回真?

javascript - 如何创建具有动态 y 轴的图表,取决于 JSON 中的最高值

javascript - 内容可编辑的字数,包括默认文本

javascript - 当 Jquery UI 的左上角进入内部时,如何使 Jquery UI 的 Droppable 接受 Draggable?

javascript - Angular 路由: Replacing components

php - 数据库支持的输入字段的代理过滤器值

javascript - 将多个对象作为 1d 传递到数组中

javascript - 提交带有一些附加参数的表单(post,NOT ajax)

javascript - 带有 bool 值的 Object.assign