节流
概念:节流: 就是指连续触发事件但是在设定的⼀段时间内中只执⾏⼀次函数。
例如:设定2000毫秒执⾏,那你在2000毫秒触发在多次,也只在2000毫秒后执⾏⼀次
// 定义一个bool值,标记是否需要进行处理
let flag = true // 默认需要进行处理
button.addEventListener('click', function () {
//第一次点击执行判断,只能等到2000毫秒后flag重新赋值为true时才能再次进入判断
if (flag) {
flag = false
setTimeout(function () {
console.log(555);
flag = true
}, 2000)
}
})
防抖
防抖: 就是指触发事件后在n秒内函数只能执⾏⼀次,如果在n秒内⼜触发了事件,则会重新计算函数执⾏时间。
例如:设定2000毫秒执⾏,当你触发事件了,他会2000毫秒后执⾏,但是在还剩1000毫秒的时候你⼜触发了事
件,那就会重新开始2000毫秒之后再执⾏
//定义一个变量接收定时器
let tid
input.addEventListener('input', function () {
//每次操作都会执行停止计时器发送请求,只有等到不操作时后两秒才能发起请求
clearTimeout(tid)
tid = setTimeout(function () {
axios({ method: 'get', url: '/api' })
.then(function (res) {
console.log(res);})
}, 2000)
})