当前位置:网站首页>防抖debounce和节流throttle的使用
防抖debounce和节流throttle的使用
2022-07-17 00:09:00 【666-上上签】
防抖函数:在n秒内只执行最后一次(在触发某个事件后,在下一次触发之前,中间的间隔时间如果超过设置的时间才会发送请求,一直触发就不会发送请求)
应用场景:按钮提交事件,搜索功能,浏览器窗口缩放,表单验证,scroll事件滚动,resize事件
/**
* 防抖 (n秒内只执行最后一次)
* @param fn
* @param delay
* @return {Function}
* @private
*/
export function _debounce(fn, delay) {
var newDelay = delay || 500;
var timer;
return function () {
var args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
timer = null;
fn.apply(this, args);
}, newDelay);
};
}节流函数:在n秒内只执行一次(如果持续触发某个事件,则每隔n秒执行一次)
应用场景:拖拽,鼠标移动的距离,监听scroll滚动事件
/**
* 节流 (每隔n秒执行一次)
* @param fn
* @param interval
* @return {Function}
* @private
*/
export function _throttle(fn, interval) {
var last;
var timer;
var newInterval = interval || 200;
return function () {
var th = this;
var args = arguments;
var now = +new Date();
if (last && now - last < newInterval) {
clearTimeout(timer);
timer = setTimeout(function () {
last = now;
fn.apply(th, args);
}, newInterval);
} else {
last = now;
fn.apply(th, args);
}
};
}使用:
// 点击确认提交支付订单
confirmSubmit () {
this._debounce(this.action, 1000)();
}
边栏推荐
猜你喜欢

手把手带你从零开始完整开发经典游戏【俄罗斯方块】,全部逻辑只用不到200行代码。

爭奪存量用戶關鍵戰,助力企業構建完美標簽體系丨01期直播回顧

Introduction to software vulnerability analysis (5)

04-BTC-实现

CheckPoint and DataNode

Classification and use of express Middleware

TCP and UDP, TCP server and client, UDP server and client

一文揭秘育碧等传统游戏大厂的NFT策略

Database programming (MySQL) of node, adding, deleting, modifying and querying

数据指标体系如何搭建才最有效,从0到1带你快速入门丨02期直播回顾
随机推荐
Cento7 installs mysql5.5 and upgrades 5.7
fetch请求-简单记录
The difference between let and VaR
NFT单月万倍神话,元宇宙之门的奥秘是什么?
12 至少是其他数字两倍的最大数
4 搜索插入位置
NFT排行榜-NFT实盘最新地址:NFT排行榜.COM
雾计算中的数据安全问题综述
基于CSI的通信感知一体化设计:问题、挑战和展望
深度伪造对国家安全的挑战及应对
感谢各位点赞关注激增
Redis+Caffeine两级缓存,让访问速度纵享丝滑
Why do you spend 1.16 million to buy an NFT avatar in the library of NFT digital collections? The answer may be found by reviewing the "rise history" of NFT avatars
同学们 小组作业记得别抄哈 幸好只传了两道题 不要出事了
Redis suddenly slowed down?
Basic use of promise
nodejs-uuid
何为“数字藏品”?
NFT 分化趋势已显,如何捕获价值?
金融学 杂项记录