JS节流和防抖函数
一、 实现一个节流函数
// 思路:在规定时间内只触发一次
function throttle (fn, delay) {
// 利用闭包保存时间
let prev = Date.now()
return function () {
let context = this
let arg = arguments
let now = Date.now()
if (now - prev >= delay) {
fn.apply(context, arg)
prev = Date.now()
}
}
}
function fn () {
console.log('节流')
}
addEventListener('scroll', throttle(fn, 1000))
二、 实现一个防抖函数
// 思路:在规定时间内未触发第二次,则执行
function debounce (fn, delay) {
// 利用闭包保存定时器
let timer = null
return function () {
let context = this
let arg = arguments
// 在规定时间内再次触发会先清除定时器后再重设定时器
clearTimeout(timer)
timer = setTimeout(function () {
fn.apply(context, arg)
}, delay)
}
}
function fn () {
console.log('防抖')
}
addEventListener('scroll', debounce(fn, 1000))
最新文章
- Pyqt 中__init__(self,parent==None) parent理解
- MVC3中 ViewBag、ViewData和TempData的使用和区别
- AJAX制作JSON格式的实时更新数据的方法
- 使用Java编写并运行Spark应用程序
- MVC +EF+linq 多表联查
- response.sendRedirect(";";)和request.getRequestDispatcher(";";).forward(req,resp);
- DiskGenius(磁盘分区/数据恢复) 32位 V4.9.1 免费绿色版
- Ubuntu下 Astah professional 6.9 安装
- Linux网络设备驱动(一) _驱动模型
- [C#学习]0.发表之前想说的
- JavaWeb(七)Cookie,EL表达式,标准标签库
- 【★】Web精彩实战之
- 数据库 MySQL进阶之索引
- Invoker-n颜色涂m个珠子的项链
- 第三方工具系列--Lombok常用注解
- Ubuntu下 QT添加外部链接库(.so文件)示例
- AVAudioPlayer播放音频文件时没声音
- BZOJ1074 [SCOI2007]折纸origami
- centos 清除yum缓存
- 【BZOJ2138】stone(线段树,Hall定理)