防抖与节流(2)---节流封装
节流
将多次执行变为最后一次执行,节流是将多次执行变为每隔一段时间执行
理解:不管time内触发多少次,只会每间隔time时间才会触发一.
主要作用是也是减少触发 生效的次数;一般情况下用户会重复点击按钮,所以会造成重复发送请求问题,一定量造成卡顿延迟问题,这个时候便可以采用节流
直接上代码开整
相对于防抖,节流就简单些,节流主要会用到一个 ‘开关思想’
------上代码-----
var flag = true; window.addEventListener('scroll',function(){ if(flag){ flag = false; setTimeout(()=>{ console.log(123); flag = true; },1000); } });
最常用的两种形式是:时间戳和定时器
//时间戳 var prev = Date.now(); var delay = 1000 window.addEventListener('scroll',function(){ var now = Date.now(); if (now - prev >= delay) { console.log(123); //业务逻辑 prev = Date.now(); } }); //进行封装 var thro = function(fn, delay) { var prev = Date.now(); return function() { var context = this; //this指向window var args = arguments; var now = Date.now(); if (now - prev >= delay) { fn.apply(context, args); prev = Date.now(); } } } function handle() { console.log('123');//业务代码 } window.addEventListener('scroll', thro(handle, 1000));
//直接对示例代码进行封装 var thro = function(fn, delay) { var flag = true; return function() { var context = this; //this指向window if (flag) { flag = false; setTimeout(()=>{ fn.apply(context, args); flag = true; },1000); } } } function handle() { console.log('123');//业务代码 } window.addEventListener('scroll', thro(handle, 1000));
节流主要是开关的思想,保证一段时间内只触发一次
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通