如何分析JS函数的防抖和节流
发表于:2024-10-27 作者:千家信息网编辑
千家信息网最后更新 2024年10月27日,如何分析JS函数的防抖和节流,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。节流实质上是:如果你持续触发事件,每隔一段时间
千家信息网最后更新 2024年10月27日如何分析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安全错误
数据库的锁怎样保障安全
服务器启动盘灯不亮
层次数据库模型
为什么数据库备份要开归档
手机软件开发任务分解
香港主机数据库类型
浏阳app软件开发
广东前端软件开发费用
许昌市网络安全知识竞赛
网络安全建设宣传报道
珠海自主可控软件开发商家
软件开发价格谈判
电池管理系统的软件开发流程
外国服务器安全等级
服务器的管理图书
我心中的网络安全手抄报怎么写
北京华安国盾网络技术中心招聘
江苏网络技术咨询代理商
郴州软件开发公司电话
MAC连接服务器出现弹窗
湖北系统软件开发报价
猎奇网络技术开发
深圳智云网络技术有限公司
网络安全导论试题
输出数据库sql
数据库怎么识别html代码
酷丽客影吧服务器
360驱动检测提示连不上服务器
矿物服务器
微信合并软件开发怎么取消
仙逆遮天大蓝游戏没有服务器了