如何分析JS函数的防抖和节流
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,如何分析JS函数的防抖和节流,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。节流实质上是:如果你持续触发事件,每隔一段时间
千家信息网最后更新 2025年02月05日如何分析JS函数的防抖和节流
如何分析JS函数的防抖和节流,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
节流实质上是:如果你持续触发事件,每隔一段时间,只执行一次事件。
根据这个需求我们可以通过时间戳实现节流:
//第一个实现方式function throttle(func, wait) {
var context, args;
var previous = 0;
return function() {
var now = +new Date();
context = this;
args = arguments;
if (now - previous > wait) {
func.apply(context, args);
previous = now;
}
}}//另外补充一下获取时间戳的方式吧// new Date().getTime()// Date.parse(new Date())// +new Date()// Date.now()// 通过判断再次点击时间与上次点击时间的时间戳是否大于传入的时间,来判断函数是否被执行
另一种实现方式通过定时器,通过判断定时器的存在来决定函数是否被执行
// 第二种实现方式function throttle(func, wait) {
var timeout;
var previous = 0;
return function() {
context = this;
args = arguments;
if (!timeout) {
timeout = setTimeout(function(){
timeout = null;
func.apply(context, args)
}, wait)
}
}}//
看上面两种实现方式的代码,比较可以发现:
方式一的事件会立刻执行,因为获取当前时间戳肯定会大于wait传入的时间,方式二事件会在 n 秒后第一次执行,因为设置了定时器,所以会在wait秒之后执行。
如果我们连续执行了几次,第一种方式会在事件结束之后不会再执行函数,第二种会在结束之后wait秒之后再执行一次。
怎么中和实现一下两种方式呢?
// 第三种方式function throttle(func, wait, options) {
var timeout, context, args, result;
var previous = 0;
if (!options) options = {};
var later = function() {
previous = options.leading === false ? 0 : new Date().getTime();
timeout = null;
func.apply(context, args);
if (!timeout) context = args = null;
};
var throttled = function() {
var now = new Date().getTime();
if (!previous && options.leading === false) previous = now;
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0 || remaining > wait) {
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
previous = now;
func.apply(context, args);
if (!timeout) context = args = null;
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
};
return throttled;}
//leading:false 表示禁用第一次执行
//trailing: false 表示禁用停止触发的回调
//那就是 leading:false 和 trailing: false 不能同时设置。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
方式
时间
事件
函数
定时器
第一次
需求
帮助
分析
清楚
代码
内容
再次
可以通过
同时
实质
对此
就是
文章
新手
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
昆明的网络安全公司
数据库 cursor
IT网络技术员食宿双休
郑州互联网科技公司待遇
数据库从联机制
软件开发培训公司
北京电商系统软件开发
长沙直播软件开发公司哪家强
软件开发园区
对于数据库的三个基本表……
贵阳市合同制网络技术员招聘信息
pdb数据库搜不出来
希望之村里面如何进服务器
中国中医药临床案例成果数据库
数据库录入技术员是干嘛的
服务器入网 出网
远程服务器不能用吗
网络机柜和服务器机柜区别
公文数据库建立
数据库分片集群
x固定的数据库
服务器升级之后无法上网
数据库中的所有临时表删除
中华航运数据库
软件开发费用大概多少钱
验收软件开发单位意见
网络安全等级保护要求新标准
山东省浪潮存储服务器销售电话
银河证券总部数据库部门好吗
一年网络安全事件