函数防抖和节流
防抖就是只执行最后一次,节流就是每隔一段时间执行一次
防抖
需求:
- 持续触发时不执行
- 不触发的一段时间后才执行
解决:
-
想要不触发一段时间后才执行,那就是需要定时器
-
封装一个函数,让持续触发的事件监听是我们封装的这个函数,将目标函数作为回调(func)传进去,等待一段时间过后执行目标函
-
function debounce(func, delay) { return function() { setTimeout(() => { func.apply(this, arguments) }, delay) } }
-
持续触发不执行:那就是持续触发的时候清除掉 计时器
-
function debounce(func, delay) { let timeout return function() { clearTimeout(timeout) // 如果持续触发,那么就清除定时器,定时器的回调就不会执行。 timeout = setTimeout(() => { func.apply(<