当前位置:网站首页>小程序的防抖节流怎么写?
小程序的防抖节流怎么写?
2022-06-28 02:59:00 【Dark_programmer】
1.概念
函数防抖(debounce)
函数防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。
简单的说,当一个动作连续触发,则只执行最后一次。
如果有人进电梯(触发事件),那电梯将在10秒钟后出发(执行事件监听器),这时如果又有人进电梯了(在10秒内再次触发该事件),我们又得等10秒再出发(重新计时)
函数节流(throttle)
限制一个函数在一定时间内只能执行一次。
保证如果电梯第一个人进来后,10秒后准时运送一次,这个时间从第一个人上电梯开始计时,不等待,如果没有人,则不运行
2. 代码封装
函数防抖(debounce)
/** * * @param {*} cb 回调函数 * @param {*} delay 延时时间 */
const debounce = (cb, delay = 1000) => {
let timer = null;
return function() {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
cb.apply(this, arguments);
}, delay);
};
};
函数节流(throttle)
/** * * @param {*} cb 回调函数 * @param {*} wait 等待时间 */
const throttle = (cb, delay = 1000) => {
//距离上一次的执行时间
let lastTime = 0;
return function() {
let _this = this;
let _arguments = arguments;
let now = new Date().getTime();
//如果距离上一次执行超过了delay才能再次执行
if (now - lastTime > delay) {
cb.apply(_this, _arguments);
lastTime = now;
}
};
};
3. 使用
mine.axml
<view class="root_container">
<input placeholder="Input" onInput="inputHandle" />
<button size="default" type="primary" catchTap='clickHandle'>Button</button>
</view>
mine.js
import {
debounce, throttle } from "/utils/index.js";
// 节流使用
clickHandle: throttle(function(...args) {
console.log("throttle", args);
console.log("throttle", this);
}, 2000),
// 防抖使用
inputHandle: debounce(function(...args) {
console.log("debounce args", args);
console.log("debounce this", this);
}, 1000),
边栏推荐
- Relative path writing of files
- collections. Use of defaultdict()
- Go speed
- Scalable storage system (I)
- Research and arrangement of electronic map coordinate system
- Li Kou daily question - day 29 -219 Duplicate Element II exists
- 学习---有用的资源
- 力扣每日一题-第29天-523.在区间范围统计奇数数目
- 新手开哪家的证券账户是比较好?炒股开户安全吗
- 如何给Eclips自动添加作者,时间等…
猜你喜欢

资源管理、高可用与自动化(中)

Resource management, high availability and automation (Part 2)

失联修复:让“躲猫猫”无处可藏

mysql获取当前时间是一年的第多少天

Online DDL implementation mechanism in InnoDB of database Series

用于 C# 的 SQL 基本语法总结

2022 safety officer-c certificate examination question bank simulated examination platform operation

Chapter IX app project test (3) test tools

Build your own website (17)

Lost connection repair: make "hide and seek" nowhere to hide
随机推荐
Import an excel file, solve the problem of skipping blank cells without reading and moving the subscript forward, and return_ BLANK_ AS_ Null red
Necessary software tools in embedded software development
Summary of SQL basic syntax for C #
导入Excel文件,解决跳过空白单元格不读取,并且下标前移的问题,以及RETURN_BLANK_AS_NULL报红
「运维有小邓」监控文件及文件夹变更
学习---有用的资源
Importer un fichier Excel, résoudre le problème de sauter les cellules vides et de ne pas lire, et avancer l'indice, et retourner Blank As NULL Red
WebSocket(简单体验版)
猴子都会用的圆形滑动自动吸附UI工具
调试利器 go-spew
失联修复:让“躲猫猫”无处可藏
组件拆分实战
Resource management, high availability and automation (medium)
MySQL error
Analysis of slow logs in MySQL and tidb of database Series
INFO:&nbsp;HHH000397:&nbsp;Using…
How does the open-ended Hall current sensor help the transformation of DC power distribution?
Li Kou daily question - day 29 -523 Count odd numbers in interval range
TypeError:&nbsp;&# 039; module&amp;# 03…
matlab习题 —— 数据的基本处理