JS编程建议——76:要重视函数节流

简介: 76:要重视函数节流

建议76:要重视函数节流
比起非DOM交互,DOM操作需要更多内存和CPU时间。连续尝试进行过多的DOM相关操作可能会导致浏览器变慢甚至崩溃。函数节流的设计思想就是让某些代码可以在间断情况下连续重复执行,实现的方法是使用定时器对函数进行节流。
例如,在第一次调用函数时,创建一个定时器,在指定的时间间隔后执行代码。当第二次调用时,清除前一次的定时器并设置另一个,实际上就是前一个定时器演示执行,将其替换成一个新的定时器。
var processor = {

timeoutId : null,
//实际进行处理的方法
performProcessing : function() {
    //实际执行的方法
},
//初始处理调用的方法
process : function() {
    clearTimeout(this.timeoutId);
    var that = this;
    this.timeoutId = setTimeout(function() {
        that.performProcessing();
    }, 100);
}

};
//尝试开始执行
Processor.process();
简化模式:
function throttle(method,context){

clearTimeout(mehtod.tId);
    mehtod.tId = setTimeout(function(){
    method.call(context);
},100);

}
函数节流解决的问题是一些代码(特别是事件)的无间断执行,这个问题严重影响了浏览器的性能,可能会造成浏览器反应速度变慢或直接崩溃,如resize、mousemove、mouseover、mouseout等事件的无间断执行。这时加入定时器功能,将事件进行“节流”,即在事件触发的时候设定一个定时器来执行事件处理程序,可以在很大程度上减轻浏览器的负担。类似应用如支付宝中的“导购场景”导航,以及当当网首页左边的导航栏等,这些都是为了解决mouseover和mouseout移动过快给浏览器处理带来的负担,特别是减轻涉及Ajax调用给服务器造成的极大负担。例如:
oTrigger.onmouseover = function(e) {//如果上一个定时器还没有执行,则先清除定时器

oContainer.autoTimeoutId && clearTimeout(oContainer.autoTimeoutId);
e = e || window.event;
var target = e.target || e.srcElement;
if((/li$/i).test(target.nodeName)) {
    oContainer.timeoutId = setTimeout(function() {
        addTweenForContainer(oContainer, oTrigger, target);
    }, 300);
}

}

相关文章
|
4月前
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
5月前
|
JavaScript 前端开发 编译器
解锁JavaScript模块化编程新纪元:从CommonJS的基石到ES Modules的飞跃,探索代码组织的艺术与科学
【8月更文挑战第27天】随着Web应用复杂度的提升,JavaScript模块化编程变得至关重要,它能有效降低代码耦合度并提高项目可维护性及扩展性。从CommonJS到ES Modules,模块化标准经历了显著的发展。CommonJS最初专为服务器端设计,通过`require()`同步加载模块。而ES Modules作为官方标准,支持异步加载,更适合浏览器环境,并且能够进行静态分析以优化性能。这两种标准各有特色,但ES Modules凭借其更广泛的跨平台兼容性和现代语法逐渐成为主流。这一演进不仅标志着JavaScript模块化的成熟,也反映了整个JavaScript生态系统的不断完善。
59 3
|
2月前
|
前端开发 JavaScript 持续交付
提高JavaScript编程效率
提高JavaScript编程效率
31 3
|
2月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
24 2
|
4月前
|
JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果
JavaScript编程实现tab选项卡切换的效果
|
4月前
|
JavaScript 前端开发
用JavaScript编程控制网页上checkbox选择状态:全选、全部取消、反选
用JavaScript编程控制网页上checkbox选择状态:全选、全部取消、反选
|
4月前
|
JavaScript 前端开发 安全
JavaScript编程实现字符和字符串翻转
JavaScript编程实现字符和字符串翻转
|
4月前
|
JavaScript 前端开发
用JavaScript编程定义二维数组并初始化,然后输出元素值
用JavaScript编程定义二维数组并初始化,然后输出元素值
|
5月前
|
JavaScript 前端开发 安全
揭秘TypeScript的魔力:它是如何华丽变身为JavaScript的超能英雄,让您的代码飞入全新的编程维度!
【8月更文挑战第22天】在Web开发领域,JavaScript是最主流的编程语言之一。但随着应用规模的增长,其类型安全和模块化的不足逐渐显现。为解决这些问题,微软推出了TypeScript,这是JavaScript的一个超集,通过添加静态类型检查来提升开发效率。TypeScript兼容所有JavaScript代码,并引入类型注解功能。
43 2
|
5月前
|
JavaScript 前端开发 Oracle