小程序按钮防抖和节流
js实现防抖和节流网上写法大都雷同,踩坑之处都不带重样的,这里为了后来人方便记录一下,
在面试题中,一般将防抖 说到 闭包写法 函数嵌套函数 加个定时器就可以
实现起来也是这么回事,
防抖使用场景:按钮点击、输入框搜索、滚动事件
节流场景:DOM元素拖拽、运动事件
// util.js里封装方法
// 防抖函数
function debounce(fn, wait) {
var timer = null;
return function () {
var context = this
var args = arguments
if (timer) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(function () {
fn.apply(context, args) //保持this和参数
}, wait)
}
}
//节流函数
function throttle(fn, gapTimes) {
const gapTime = gapTimes || 1500
let _lastTime = null
// 返回新的函数
return function () {
let _nowTime = new Date()
if (_nowTime - _lastTime > gapTime || !_lastTime) {
fn.apply(this, arguments) //将this和参数传给原函数
_lastTime = _nowTime // 点击一次是会执行一次 但在这里进行了判断赋值 把现在时间给上一次时间 当下一次再点击时 现在时间减去上一次时间 如果大于设定间隔时间 才执行 fn()函数 传入的fn 才是我要执行的函数体
}
}
}
页面中引入 ,此处以小程序为例
// 引入util const util = require('../util')
handleUpgrade: util.throttle(function (e) {
console.log(this)
console.log(e)
console.log((new Date()).getSeconds())
}, 3000)
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaejfe
系列文章
更多
-
Abaqus复合材料3D Hashin失效准则,脆性断裂-Vumat
-
ModuleNotFoundError: No module named ‘matplotlib‘怎么办
-
Cesium结合GIS天地图 加载倾斜摄影3dtile + vue3
-
Paper Reading- Center-based 3D Object Detection and Tracking (Based: KITTI)
-
自监督医学图像Models Genesis: Generic Autodidactic Models for 3D Medical Image Analysis论文精读笔记
-
Centos7极快安装Elasticsearch 7.17.7
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24