防抖
- 函数防抖:单位时间内,频繁触发事件,只会触发最后一次
- 应用场景:输入框输入事件
- 实现:声明全局变量存储定时器ID,每一次触发事件, 先清除上一次定时器。 然后将事件处理代码放入本次定时器中 js代码:
let timeId = null
const input = document.querySelector('input')
input.addEventListener('input',function(){
clearTimeout(timeId)
timeId = setTimeout(() => {
console.log(input.value)
}, 2000)
})
html代码:
<input type="text" placeholder="请输入文本">
节流
- 函数节流:单位时间内,频繁触发事件,只会触发一次
- 应用场景:滚动条事件
- 实现:
- 声明全局变量存储上一次触发交互时间
- 每一次触发事件, 获取当前时间 与 上一次时间做比较。判断是否超过节流间隔
- 如果 超过节流时间,则执行事件处理代码。 并且存储本次触发时间。 js代码:
let lastTime = null
window.addEventListener('scroll',function(){
let currentTime = Date.now()
if(currentTime - lastTime >= 500){
lastTime = currentTime
}
})
如果有不正确的地方,欢迎指出 感谢阅读^-^