console
function debounce(fn, time) {
let timer = null
return function (...args) {
let context = this
timer && clearTimeout(timer)
timer = setTimeout(() => {
fn.apply(context, args)
}, time)
}
}
function throttle(fn, time) {
let timer = null
return function (...args) {
let context = this
if (!timer) {
timer = setTimeout(() => {
fn.apply(context, args)
timer = null
}, time)
}
}
}
function demo(name) {
console.log(`${name}:${Math.random()}`)
}
let debounceFn = debounce(demo, 1000)
let throttleFn = throttle(demo, 1000)
document.querySelector('#debounce').addEventListener('click', () => {
debounceFn('debounce')
})
document.querySelector('#throttle').addEventListener('click', () => {
throttleFn('throttle')
})
<button id="debounce">debounce</button>
<button id="throttle">throttle</button>