如何分析JS函数的防抖和节流
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,如何分析JS函数的防抖和节流,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。节流实质上是:如果你持续触发事件,每隔一段时间
千家信息网最后更新 2026年11月04日如何分析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安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
互联网品科技
互联网金融公司科技
润盈互联网科技
美国互联网前沿科技
昭通云南众福互联网科技有限公司
互联网校园科技培训
南平创想时代互联网科技有限公司
阿大互联网科技有限公司
成都互联网科技公司工作好不好
互联网科技和信息
互联网金融科技展
伊宁互联网科技做什么的
区块链结合互联网科技
每天都有哪些好的互联网科技
互联网领先科技宣传片
互联网科技年终奖
江苏互联网科技小贷
东营紫格互联网科技
科技互联网专业工作会议发言稿
精品咖啡豆
互联网科技海报
互联网与科技金融数据
互联网金融 科技
互联网金融 金融科技
互联网 卓越科技
新浪科技互联网
如何创新互联网科技
晋城互联网科技
广州三三互联网科技有限公司