节流函数
节流即throttle,规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
function throttle(fn, interval = 300) { let canRun = true; return function () { var context = this if (!canRun) return; canRun = false; setTimeout(() => { fn.call(context, arguments); canRun = true; }, interval); };}复制代码
防抖函数
debounce 函数防抖是指频繁触发的情况下,只有足够的空闲时间,才执行代码一次。比如坐电梯门要关了,结果有个人又要进来,电梯门就需要重新开关,想象如果有10个人陆陆续续进来,电梯门就会开开关关多次,这样的话还不如固定时间关一次门,用来节省消耗。
function debounce(method,time){ var timer = null ; return function(){ var context = this; //在函数执行的时候先清除timer定时器; clearTimeout(timer); timer = setTimeout(function(){ method.call(context, arguments); },time); }}复制代码