javascript - 如何在不卡住浏览器的情况下执行繁重的 JavaScript 代码?

标签 javascript html scheduling freeze

我有一个页面在加载后执行大量 JavaScript 代码。为了防止页面在加载时卡住,我将执行分成几批,中间有一些“不执行”时间(使用超时),一切运行良好。

最近,我不得不添加额外的繁重 JavaScript 代码,这些代码可以根据客户端操作执行,但这些操作甚至可以在原始繁重脚本执行完成之前发生。这一次,间隔操作不会有帮助,因为在一个脚本的“停机时间”,另一个脚本可以运行,反之亦然,这将导致浏览器卡住。

问题实际上更复杂,因为有多个这样的操作,每个操作都执行不同的重型脚本,并且与其他脚本相比,每个脚本对于我希望它完成的速度都有不同的“优先级”的。

我的问题是,这种情况下的常见做法是什么?我尝试想一种方法来解决它,但我能想到的只是一个相当复杂的解决方案,这几乎就像用 javascript 编写操作系统一样 - 即编写一个“管理器”代码,该代码每 X 次执行一次(使用“中断”),并选择“要切换到的上下文”(=现在应该运行哪个作业)等...

然而,这对我来说听起来相当复杂,我希望可能还有其他解决方案。我的问题听起来像是我认为很多人以前偶然发现过的问题,所以即使唯一的解决方案是我建议的,我也会假设有人已经编写了它,或者有一些库支持这一点。

任何帮助将不胜感激。谢谢。


==编辑==
我所说的“重代码”是指大量元素的 DOM 操作。

最佳答案

您需要考虑将 UI/问题域定义为一组异步任务。这里有更多见解 http://alexmaccaw.com/posts/async_ui直到我为您制定更好的答案。

关于javascript - 如何在不卡住浏览器的情况下执行繁重的 JavaScript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656578/

相关文章:

html - 如何在文本文章之间的右侧放置一个小段落

html - 表单提交后保持选中单选按钮

Javascript "shift"与 "splice"- 这些语句是否相等?

javascript - 可以使用交叉观察器在目标的特定偏移顶部计算/触发吗?

javascript - 如何防止后退箭头关闭 Opera Mobile 12 中的弹出窗口?

javascript - 两个 Div 彼此相邻,其中 ID 包含图像

html - html中类似电子表格的输入?

c - 在核心上运行用户任务并最小化中断/抢占

windows - Windows计划任务的实用替代品(小店)

python - Python Web 应用程序的预定后台函数