Vue 防抖与节流
防抖
高频请求只有最后一次处理
实现原理:每次响应时清空定时期,延时时间要高于高频请求的间隔
function debounce(fn, delay = 500) {
let timer = null
return function() {
let args = arguments
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn.apply(this, args);
}, delay)
}
}
核心就是调用时需要注意,利用的是闭包,method需要赋予执行后的返回值
antiShake: debounce(function() {
console.log('前辈会被清除吗?2')
}, 1000),
antiShake2: debounce(function() {
console.log('兄弟会被清除吗?1')
}),
// 请勿使用箭头函数,它没有this
可在created中测试
this.antiShake()
this.antiShake()
this.antiShake()
this.antiShake2()
this.antiShake2()
this.antiShake2()
// 兄弟会被清除吗?1
// 前辈会被清除吗?2
节流
每处理一次请求,会有一段时间的静默
export function throttle(fn, interval = 500) {
var last;
return function () {
var args = arguments;
var now = +new Date();
if (!last || now - last > interval) {
last = now;
fn.apply(this, args);
}
}
}
内容会不断更新,欢迎批评指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)