
实现节流函数(throttle)
js
let throttle = (fn, time = 1000) => {
let flag = true
return function (...args) {
if (flag) {
flag = false
setTimeout(() => {
flag = true
fn(...args)
}, time)
}
}
}js
// func是用户传入需要节流的函数
// wait是等待时间
const throttle = (func, wait = 50) => {
// 上一次执行该函数的时间
let lastTime = 0
return function (...args) {
// 当前时间
let now = +new Date()
// 将当前时间和上一次执行函数时间对比
// 如果差值大于设置的等待时间就执行函数
if (now - lastTime > wait) {
lastTime = now
func.apply(this.args)
}
}
}js
function throttle(fn, delay) {
let flag = true
return () => {
if (!flag) return
flag = false
timer = setTimeout(() => {
fn()
flag = true
}, delay)
}
}
