介绍:
当下网页中的交互越来越多,很多高频事件带来的性能问题,已经是绕不过去的一个坎。怎么去优化这些高频事件,以下来基于防抖和节流的性能优化。
1、防抖和节流的概念:
防抖:就是指触发事件后在n秒内函数只能执行一次,如果在n秒内又触发了事件,则会重新计算函数执行时间。
节流:就是指连续触发事件,但是在一段时间中只执行一次函数。
2、手写防抖函数和节流函数:
2.1防抖函数
function debounce(fn,wait){
let timmer = null;
return function(){
var args = arguments;
var now = !timmer;
timmer && clearTimeout(timmer);
timmer = setTimeout(function(){
timmer = null;
},wait);
if(now){
fn.apply(this,args)
}
}
}
2.2手写节流函数
/**
* @param {function} func - 执行函数
* @param {number} delay - 延迟时间
* @return {function}
*/
function throttle(func, delay){
let timer = null
return function(...arg){
if(!timer){
timer = setTimeout(()=>{
func.apply(this, arg)
timer = null
}, delay)
}
}
}