JavaScript-在Javascript中如何利用定时器将长时间运行的脚本切分成块运行?
在浏览器中往往DOM操作要比非DOM交互需要更多内存和CPU时间。因为javascript是运行于单线程环境中,如果时间过长可能导致浏览器挂起或崩溃,尤其是IE。如使用onresize事件,当调整浏览器大小时,该事件会连续触发。
现在想问下有什么通用的方法或技巧,使用setTimeout()
或setInterval()
创建的定时器的方式,将频繁触发或耗时的脚本拆分成块执行?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
就以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,提供用户处理的进度条,可以增强用户体验。