节流与防抖:
时间到了一定程度才能执行
防抖:
我们希望触发某个事件后不会立即返回结果,而是等待一定时间后才发生,如果在这段时间内又触发了这个事件,又要重新计时。举个翻译搜索的例子,想要自动翻译,肯定不是输入一点内容后就直接翻译了,我们希望的是当我们不输入后等待1s,表示我们确定输入完成了才翻译,这时候就需要防抖
。
防抖封装为函数
function debounce (handler,wait){
var timer=null;
return function(){
clearTimeout(timer);
timer=setTimeOut(()=>{
handler.apply(this,arguments);
},wait)
}
}
oInp.oninput=debounce(执行函数,等待时间ms)
节流
我们在百度搜索时会触发input事件,来关联与输入信息匹配的内容。但是我们并不希望我们每次键入都触发这个事件,而是在一定时间内只执行一次,这样可以提高浏览器的的效率。所以我们可以对要执行的函数节流
操作:
function throttle (handler,wai){
var lastTime=0;
return function(){
var nowTime=new Date().getTime();
if(nowTime-lastTime>wait){
handler.apply(this,arguments);
lastTime=nowTime;
}
}
}
input.oninput=throttle(执行函数,等待时间ms)