1、防抖debounce:强制函数在某段时间内只执行一次
const debounce = (fn, delay) => {
let time;
return () => {
clearTimeout(time)
time = setTimeout(() => {
fn()
}, delay)
}
// 或者
// return function (...args) {
// const context = this
// clearTimeout(time)
// time = setTimeout(() => {
// fn.apply(context, args)
// }, delay)
// }
}
debounce.leading(先执行再防抖)
debounce.trailing(先防抖再执行)
function debounce(fn, delay, immediate) {
// immediate: true-------debounce.leading
// immediate: false------debounce.trailing
let time
return function (...args) {
const context = this
const flag = immediate && !time
clearTimeout(time)
time = setTimeout(() => {
if (!immediate) fn.apply(context, args)
}, delay)
if (fl