防抖与节流
//防抖
<body>
<input type="text" id="inp">
<script>
var oInp = document.getElementById('inp');
function ajax(e) {
console.log(e, this.value);
}
function debounce(handler, delay) {
var timer = null;
return function () {
var _self = this,
_arg = arguments;
clearTimeout(timer);
tiemr = setTimeout(function () {
handler.apply(_self, _arg);
}, delay);
}
}
oInp.oninput = debounce(ajax, 2000);
</script>
</body>
在输入框输入完成后触发功能
// 节流
<body>
<div id="show" style="margin-bottom: 10px;">0</div>
<buttom id="btn" style="width:50px;height:30px;cursor: pointer;background-color: orange;">click</buttom>
<script>
var oDiv = document.getElementById('show');
var oBtn = document.getElementById('btn');
function throttle(handler, wait) {
var lastTime = 0;
return function (e) {
var nowTime = new Date().getTime();
if (nowTime - lastTime > wait) {
handler.apply(this, [arguments]);
lastTime = nowTime;
}
}
}
function buy(e) {
console.log(this, e);
oDiv.innerText = parseInt(oDiv.innerText) + 1;
}
oBtn.onclick = throttle(buy, 1000);
</script>
</body>
节流概念:防止恶意脚本攻击,等到上次点击事件结束后,开启下次的点击事件