js防抖和限流

防抖

函数在300毫秒内触发就停掉定时器,只有在300毫秒后触发才会执行回调。

function debounce(callback,delay=300){
var t = null
return function(){
clearTimeout(t)
t = setTimeout(callback,delay)
}
}
window.onscroll = debounce(function(){
console.log('调用了一次');
})


限流

函数只有在前后两次的时间大于500毫秒触发才会执行回调。

function throttle(callback,duration){
var lastTime = new Date().getTime()
return function(){
var now = new Date().getTime()
if(now - lastTime > 500) {
callback();
lastTime = now;
}
}
}
window.onscroll = throttle(function(){
console.log('调用了一次');
})