函数节流(throttle):高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率。
函数的节流和防抖都是为了性能的优化,首先是能够优化前端性能,减少浏览器压力,其次也能够减少后端的相应次数。
节流的实现:
// 生成节流函数
function creatDebounced(callback, delay){
let timer
return function (){
if (timer){ return }
timer = setTimeout(()=>{
// 此处设置apply 是为了保证函数上下文不改变
callback.apply(this, arguments)
clearTimeout(timer)
}, delay)
}
}
// 测试
let test = creatDebounced(function (i){
console.log("函数节流测试",i)
}, 1000)
// 此处test 即可实现节流的功能
test("1")
test("2")