防抖
- 概念:控制次数 - 触发高频事件后 n 秒内函数只执行一次,如果 n 秒内高频事件再次触发则重新计算时间
- 使用场景:
- search 搜索功能,在不间断输入值的时候用防抖来节约请求资源
- window 触发 resize 的时候会不间断的执行,用防抖来让其只触发一次
function debounce(fun, wait = 500) {
let task = null
return function() {
if(task) clearTimeout(task)
task = setTimeout(() => {
fun.apply(this, [...arguments])
}, wait)
}
}
节流
- 概念:控制频率 - 高频事件触发 n 秒内只执行一次
- 使用场景:
function throttle(fun, wait = 1000) {
let lastTime = 0
return function() {
let nowTime = + new Date()
if(nowTime - lastTime > wait) {
lastTime = nowTime
fun.apply(this, [...arguments])
}
}
}
function throttle(fun, wait = 1000) {
let canRun = true
return function() {
if(!canRun) return
canRun = false
setTimeout(() => {
fun.apply(this, [...arguments])
canRun = true
}, wait)
}
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。