博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js节流和防抖
阅读量:6928 次
发布时间:2019-06-27

本文共 1033 字,大约阅读时间需要 3 分钟。

函数节流(Throttle)

定义:指定的时间间隔内只执行一次任务

function Throttle(fn,delay){    let last,timer;    return function(){        let that = this;        let _args = arguments;        let now = +new Date();//等价 new Date().getTime()        if(last && now < last + delay){            clearTimeout(timer);            timer = setTimeout(function(){                last = now;                fn.apply(that,_args);            },delay)        }else {            last = now;            fn.apply(that,_args);        }            }    }复制代码

防抖(debounce)

定义:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时

function debounce(fn,delay){    let timer = null;    return function(){        let that = this;        let _args = arguments;        clearTimeout(timer);        timer = setTimeout(function(){            fn.applay(that,_args);        },delay)    }}复制代码

应用场景:

debounce(防抖):

1.输入框进行搜索,用户在不断进行输入的时候,不去请求,用防抖来节约请求资源; 2.window触发resize的时候,会不断触发回调,用防抖来让其只触发一次

throttle(节流):

1.鼠标不断点击触发,或按钮不断被点击触发 2.监听滚动事件,比如滚动到底部自动加载,用throttle判断

转载于:https://juejin.im/post/5cd282ba6fb9a032514bc4c5

你可能感兴趣的文章
谈谈持续集成,持续交付,持续部署之间的区别
查看>>
UICollectionView 头视图、 尾视图以及Cell自定制
查看>>
Centos中yum方式安装java
查看>>
for loop
查看>>
Linux常用命令详解(一) -- 处理目录常用命令
查看>>
指针变量的星号是靠近变量名还是靠近类型
查看>>
在线程中执行代码
查看>>
POJ 2299 Ultra-QuickSort【树状数组+离散化】
查看>>
神经网络损失函数公式解读
查看>>
Android Studio插件:PlantUML
查看>>
Nginx开发从入门到精通
查看>>
Jenkins配置手动发版
查看>>
横向图片轮播(如果一个项目里面只需用这一次,可以用这个插件,多次则不建议使用)...
查看>>
计算机存储单位KB,MB,GB,TB,PB,EB,ZB,YB后面是什么?
查看>>
python 基础笔记十九 - 面向对象
查看>>
Linux安全之——Ubuntu的iptable命令使用
查看>>
entOS7查看开放端口命令
查看>>
操作系统位数
查看>>
关于call()的this指向研究
查看>>
.NET 人工智能相关资料整理
查看>>