节流函数
throttle
用于解决频繁操作问题,限制一定时间内点击不触发事件
文章目录
一、不同的实现方法
1、定时器
- 缺点
首次也会被延迟,不会立即执行
// 使用setTimeout实现
function throttle (fn, delay) {
let flag = false
if (!flag) {
return function() {
let context = this, args = arguments
flag = setTimeout(() => {
fn.apply(context, args)
flag = true
}, delay)
}
}
}
2、时间戳
- 缺点
在不可操作时间段中,点击无效,时间段结束不自动执行,要再点击一次
有时需求,频繁操作后,要记住最后一次点击,并定时结束自动执行
// 比较两次时间戳的间隔 是否大于等于 指定的时间 来决定是否执行事件回调
function throttle (fn, delay) {
let start = 0
return function () {
if (now - start