防抖
所谓防抖,就是如果短时间内大量触发同一事件,只会执行一次函数。
节流
给用户一个触发事件的时间间隔,类似于游戏里面技能的冷却时间,触发之后过了一定时间之后才能在次点击。
防抖和节流都是对定时器的使用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button onclick="debounce()">防抖</button>
<button onclick="throttle()">节流</button>
</body>
<script>
/* 防抖函数,如果短时间内大量触发同一事件,只会执行一次函数。 */
let debouncetimer = null
function debounce() {
// 当用户停止点击按钮1s后,才会打印出 '防抖'
if (debouncetimer) {
clearTimeout(debouncetimer)
}
debouncetimer = setTimeout(() => {
console.log("防抖");
}, 1000);
}
/* 节流函数,给用户一个触发事件的时间间隔,类似于游戏里面技能的冷却时间,过了一定时间之后才能在次点击 */
let throttletimer = false
function throttle() {
//throttletimer相当于一个阀门,为true的时候就不在往下执行
if (throttletimer) return
//触发了事件就开启阀门
throttletimer = true
setTimeout(() => {
throttletimer = false //固定时间后关闭阀门
}, 1000);
console.log("节流");
}
</script>
</html>