Open One-AnDong opened 5 years ago
简单封装了下两个函数,关于节流和防抖我想前端开发者都很熟悉了,节流就是预定一个周期,在这个周期内函数只会执行一次,也就是大于这个周期函数才会执行,应用场景:窗口调整(resize)、页面滚动(scroll)、抢购疯狂点击(mousedowm)
/* --------------------------函数节流-------------------------------- */ const throttle = (fn, wait) => { let lastTime = 0 return function() { let nowTime = new Date().getTime() if (nowTime - lastTime > wait) { fn.apply(this, arguments) lastTime = nowTime } } }
很多时候我们需要在用户作出操作后执行请求或处理业务逻辑,但是用户可能会频繁的进行操作,例如在输入框输入文本,这时候我们就需要防抖了,但用户执行操作一定时间后才执行请求,如果在这段时间内用户又重新进行了操作,那么我们就把之前的操作请求撤销,具体实现如下
/* --------------------------函数防抖-------------------------------- */ const debounce = (fn, wait) => { let timer return function() { clearTimeout(timer) timer = setTimeout(() => { fn.apply(this, arguments) }, wait) } }
节流
简单封装了下两个函数,关于节流和防抖我想前端开发者都很熟悉了,节流就是预定一个周期,在这个周期内函数只会执行一次,也就是大于这个周期函数才会执行,应用场景:窗口调整(resize)、页面滚动(scroll)、抢购疯狂点击(mousedowm)
防抖
很多时候我们需要在用户作出操作后执行请求或处理业务逻辑,但是用户可能会频繁的进行操作,例如在输入框输入文本,这时候我们就需要防抖了,但用户执行操作一定时间后才执行请求,如果在这段时间内用户又重新进行了操作,那么我们就把之前的操作请求撤销,具体实现如下