JS节流与防抖
JS节流和防抖是说的非常多一个话题,不论什么时候,
不然会来带很多性能问题。
节流
实现函数节流throttle的方法一般有两种:
定时器
setTimeOut时间戳
new Date()
定时器方式
function throttle(fn, time) {
let timer;
return function(){
const args = arguments;
const _that = this;
if(timer) {
return;
}
timer = setTimeOut(() => {
fn.call(_that, args);
timer = null;
}, time);
}
}或者两者组合起来使用,更加精确
定时器+时间戳方法
测试
防抖
当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。
测试:设置一个定时器,每10ms执行一次,1s后关闭。 debounce防抖时间设置为500ms,则函数应该在1.5s后执行
Last updated