js实现防抖,节流
2024-08-28 18:51:48
防抖函数。
将几次操作合并为一次操作进行。设置一个计时器,规定在延迟时间后触发函数,但是在延迟时间内如果再次触发,就会取消之前的计时器。如此,只有最后一次操作能触发。代码如下:
function debounce(fn,wait){
let timer=null;
return function(){
let args=arguments,that=this;
timer&&clearTimeout(timer);
timer=setTimeout(function(){fn.apply(that,args)},wait)
}
}
节流函数。
一定时间内只触发一次函数。并且开始触发一次,结束触发一次。代码如下:
function throttle(fun, delay){
let timer = null;
let startTime = Date.now();
return function(){
let curTime = Date.now();
let remain = delay - (curTime - startTime);
let that = this;
let args = arguments;
clearTimeout(timer);
if(remain <= 0){
fun.apply(that,args);
startTime = Date.now();
}else{
timer = setTimeout(fun, remain);
}
}
}
最新文章
- Python练习题 024:求位数及逆序打印
- java:抽象类和抽象函数
- Java基础知识强化之IO流笔记39:字符流缓冲流之复制文本文件案例01
- Run-Time Check Failure #2 - Stack around the variable &#39;ucPriKey&#39; was corrupt
- Cacti监控Windows主机,Windows主机的正确配置
- 汉诺塔 python版
- 计算机的启动和Linux的启动
- 用SIM900上传云端数据(原创KEKE)
- Codeforces 818B Permutation Game
- 前端到后台ThinkPHP开发整站(5)
- ajax(2)
- GeoServer安装配置
- 【BZOJ2299】[HAOI2011]向量(数论)
- 《剑指offer》-旋转数组的最小数字
- [Java] Header checkBox in Jtable
- 搭建项目vue + vue-router + vuex + vue-i18n + element-ui + egg + sequelize
- 在Asp.net WebAPI使用Session
- 20145310《网络对抗》Exp2 后门原理与实践
- 并发工具类(三)控制并发线程的数量 Semphore
- Hystrix-超时设置
热门文章
- Framework7 无限滚动
- @codeforces - 1276F@ Asterisk Substrings
- Oracle TRIM函数语法介绍
- axios细节之绑定到原型和axios的defaults的配置属性
- ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏
- SaltStack之用户账户管理
- Intellj IDEA14上用Debug启动项目启动不了:Unable to open debugger port: java.net.SocketException ";socket closed";
- MyBatis-使用XML或注解的简单实例
- [Pytorch]基于混和精度的模型加速
- 推荐几个web前端比较实用的网站