JavaScript-在Javascript中如何利用定时器将长时间运行的脚本切分成块运行?

发布于 2016-12-23 03:40:13 字数 266 浏览 1097 评论 1

在浏览器中往往DOM操作要比非DOM交互需要更多内存和CPU时间。因为javascript是运行于单线程环境中,如果时间过长可能导致浏览器挂起或崩溃,尤其是IE。如使用onresize事件,当调整浏览器大小时,该事件会连续触发。
现在想问下有什么通用的方法或技巧,使用setTimeout()setInterval()创建的定时器的方式,将频繁触发或耗时的脚本拆分成块执行?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2017-08-23 20:59:33

就以onresize举例:
基本原理:
1、触发onresize后,采用setTimeout进行延迟触发。
2、连续onresize会清除之前的setTimeout。
3、延迟时间到后执行具体的onresize逻辑。

(function() {
var handleID;
var resizeHandler = function() {
//具体的resize处理逻辑
}
window.onresize = function() {
clearTimeout(handleID);
handleID = setTimeout(resizeHandler, 500);
}
})();

另外,如果是循环时间较长的逻辑,可以分段循环,记录position,提供用户处理的进度条,可以增强用户体验。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文