函数的防抖
- 函数防抖:单位时间内,频繁触发一个事件 ,以
最后一次
触发为准
- 防抖应用场景:输入框输入事件
- 防抖流程:
- 声明一个全局变量存储定时器ID
- 每一次触发交互事件的时候,先清除上一次定时器,然后把本次事件处理代码放入定时器中
let timeID = null
document.querySelector('input').oninput = function(){
clearTimeout(timeID)
timeID = setTimeout(()=>{
console.log(`发送ajax,搜索内容是${this.value}`)
},500)
}
函数的节流
- 函数节流:单位时间内,频繁触发一个事件,只会触发一次
- 节流场景:解决高频事件(滚动条事件高频触发)
- 节流实现:
- 声明一个全局变量储存触发时间戳
- 每次触发事件,获取当前时间戳
- 判断 当前时间戳 与 上一次触发时间戳,是否间隔 500
- 如果超过触发时间戳,则执行事件处理代码.然后储存本次触发时间
let lastTime = null
window.onscroll = function(){
let currentTime = Date.now()
if( currentTime - lastTime >= 500 ){
console.log( document.documentElement.scrollTop)
lastTime = currentTime
}
}