一、什么是节流?
节流是一种优化函数重复执行频率的技术,以降低系统的资源占用率。避免代码的多次执行,提高系统的性能。
二、节流使用方法
1、使用定时器
2、判断时间间隔
3、请求动画帧
1、定时器
在函数执行的开始时间设置一个时间戳,并且在函数执行结束之前进行比较
function throttle(fn, interval) {
var lastTime = 0
return function () {
var now = +new Date()
if (now - lastTime > interval) {
fn.apply(this, arguments)
lastTime = now
}
}
}
2、 判断时间间隔
判断当前时间与上次执行时间的间隔是否大于指定的时间
function throttle(fn, interval) {
var lastTime = 0
return function () {
var now = +new Date()
if (now - lastTime > interval) {
fn.apply(this, arguments)
lastTime = now
}
}
}
3、请求动画帧
requestAnimationFrame(动画帧)可以保证在60帧每秒的动画效果下使用
function throttle(fn) {
var lastTime = 0
var requestId = null
function wrapper() {
var now = +new Date()
if (now - lastTime > 16) {
fn.apply(this, arguments)
lastTime = now
} else {
if (requestId) {
cancelAnimationFrame(requestId)
}
requestId = requestAnimationFrame(wrapper)
}
}
return wrapper
}