防抖,节流

防抖: 触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间
var btn = document.querySelector('button')
var timer = null
btn.onclick = function () {
// 每次执行把上一次定时器清除,第一次执行也会清除timer
clearTimeout(timer)
// 延时 0.5s 执行
timer = setTimeout(() => {
console.log('发送请求了。。。')
}, 500)
}
节流:高频事件触发,但在n秒内只会执行一次
var btn = document.querySelector('button')
// 节流阀 定义了一个开关
var flag = true
btn.onclick = function () {
// 如果节流阀是开启的,才会执行操作
if (flag) {
// 一旦执行 关闭节流阀
flag = false
console.log('发送请求')
setTimeout(() => {
// 请求成功后,在开启节流阀
flag = true
}, 1000)
}
}

防抖和节流主要区别:防抖只会触发最后一次事件,节流只有请求成功返回数据后才会触发下一次事件

///记录成长

posted @ 2021-01-30 11:46  小小兴  阅读(46)  评论(0编辑  收藏  举报