
网站救助计划
1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本
2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助,网站倒闭后可联系站长领取本站pdf内容
3.若网站能存活下来,后续将会持续更新内容
防抖:在用户停止某个操作一段时间之后才执行相应的监听函数,当事件被触发时,设定一个周期延迟执行动作,若期间又被触发,则重新设定周期,直到周期结束,执行监听函数。
let debounce = (fn, wait) => {
let timer, timeStamp=0;
let context, args;
let run = ()=>{
timer= setTimeout(()=>{
fn.apply(context,args);
},wait);
}
let clean = () => {
clearTimeout(timer);
}
return function(){
context=this;
args=arguments;
let now = (new Date()).getTime();
if(now-timeStamp < wait){ // 定时器期间,有新操作时,清空旧定时器,重设新定时器
clean();
run();
}else{
run(); // 定时器执行完毕,重设新定时器
}
timeStamp=now; // 记录本次操作时间
}
}
节流:当持续触发事件时,保证隔间时间触发一次事件,固定周期内,只执行一次动作,若有新事件触发,不执行。周期结束后,又有事件触发,开始新的周期。
var throttling = (fn, wait) => {
let timer;
let context, args;
let run = () => {
timer=setTimeout(()=>{
fn.apply(context,args);
clearTimeout(timer);
timer=null; // 定时器执行结束,timer设为null,下次事件触发再次执行定时器
},wait);
}
return function () {
context=this;
args=arguments;
if(!timer){ // 定时器期间,只执行最后一次操作
run();
}
}
}
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版