函数防抖
在监听一些事件(如 oninput, onresize)的时候不希望一直触发,就想在操作完成(输入完毕、resize完毕)之后执行一次方法,这时可以使用 setTimeout 来进行防抖控制
<input type="text" oninput="onInput(this)">
var timer = nullfunction onInput(e) {clearTimeout(timer);timer = setTimeout(function(){console.log(e.value);}, 1000)}
函数节流
节流是让函数在特定时间内只执行一次
var canRun = true;document.getElementById("app").onscroll = function(){if(!canRun) return;canRun = falsesetTimeout( function () {console.log("函数节流")canRun = true;}, 1000)}
函数防抖和节流都是防止函数重复高频执行,
区别:
- 防抖是在特定时间内函数不再重复调用后执行
- 节流是在特定时间内函数只执行一次
