对于防抖和节流的实现分别分享两中样式~~
// 防抖
// 01
function debounce1(func, delay) {
let timer
return function () {
clearInterval(timer)
timer = setTimeout(() => {
func()
}, delay)
}
}
// 02
function debounce2(func, delay) {
let timer
return function () {
clearInterval(timer)
if (!timer) {
func()
}
timer = setTimeout(() => {
timer = null
}, delay)
}
}
以上是防抖的代码,第一种触发之后经过,一段延时之后再执行,第二种为触发之后立即执行。
下面我们来看看节流的代码~~~~~
// 节流
// 01
function throttle1(func, delay) {
let timer
return function () {
if (!timer) {
timer = setTimeout(() => {
func()
timer = null
}, delay)
}
}
}
// 02
function throttle2(func,delay) {
let begin = 0
return function () {
let cur = new Date().getTime()
if (cur - begin > delay) {
func()
cur = begin
}
}
}
同样是两种方式,第一种使用了定时器的方式,第二种则是使用了时间戳差值得方式。
以上是防抖节流的全部代码
本人菜鸡前端,如果有写错的地方麻烦兄弟们见谅,并欢迎提出来~~~~~