JavaScript节流
节流
节流的解释:在触发任务的第一时间执行任务,并且设定定时器,如果在该定时器还未结束的时候还有触发任务的,也不执行
实现节流的核心是时间间隔,在设定的时间间隔内如果还有同样的任务进来,则不执行。
那么控制时间间隔的方法有两个,第一是setTimeout,第二是利用Date日期
// 用setTimeout时间间隔
function throttle(func,delay){
let timer;
return function () {
let context = this;
let args = arguments;
if (timer){
return;
}
timer = setTimeout(function (){
func.apply(context,args)
timer = null;
},delay)
}
}
以上利用了timer控制定时器,如果定时器被定义了,说明有任务正在执行,如果没有被定义说明可以执行任务。
// 用Date对象
function throttle1(func,delay){
let pre = 0;
return function () {
let context = this;
let args = arguments
let now = new Date();
if (now - pre > delay){
func.apply(context,args);
pre = now;
}
}
}
以上利用了日期的计算来控制时间,需要判断的是毫秒数的差,如果小于delay就是在执行时间内,不在就是执行完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报