标签:性能 from bounce 改变 服务器 drag事件 闭包 put 请求
触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间,即如果在n秒内
再次触发该事件,会清除前一次的延时函数
代码实现
// 防抖
function debounce(fn, delay = 500) {
// timer 是闭包中的
let timer = null
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, delay)
}
}
应用场景
规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
// 节流
function throttle(fn, delay = 100) {
let timer = null
return function () {
if (timer) {
return
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, delay)
}
}
一般在实际项目中我们可以直接用库import _ from ‘lodash‘;
vue中用法如下
标签:性能 from bounce 改变 服务器 drag事件 闭包 put 请求
原文地址:https://www.cnblogs.com/fcblog2022/p/13277227.html