varthrottle=function(func,delay){ varprev=Date.now(); returnfunction(){ varcontext=this; varargs=arguments; varnow=Date.now(); if(now-prev>=delay){ func.apply(context,args); prev=Date.now(); } }}functionhandle(){ console.log(Math.random());}window.addEventListener('scroll',throttle(handle,1000));两个date.now()是怎么运行的原理是什么
2 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
先用闭包的方式在注册的时候初始化了一个时间戳作为节流计时的开始,每次节流函数执行的时候判断当前时间和节流开始的时间差如果大于等于预计时间(delay)就把节流开始计时的时间更新一下,以当前时间节点为下一个节流的开始时间。这样就保证了每一段时间执行一次
添加回答
举报
0/150
提交
取消