防抖:无论触发多少次,只执行最后一次
代码实现:
const f1 = (function () {
let timeout;
return function (cb, wait) {
timeout && clearTimeout(timeout)
timeout = setTimeout(() => {
cb()
}, wait)
}
})()
function action () { // 这是原执行函数
console.log('do');
}
f1(action, 800)
节流:一直不间断触发,每隔一段时间执行一次
代码实现:
const f2 = (function () {
let timeout;
return function (cb, wait) {
if (!timeout) {
timeout = setTimeout(() => {
cb()
timeout = null
}, wait)
}
}
})()
function action () {
console.log('do');
}
f2(action, 800)