微信小程序全局封装防抖节流函数

这篇具有很好参考价值的文章主要介绍了微信小程序全局封装防抖节流函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是防抖节流?

  • 防抖: 简单来说就是指触发事件后在 n 秒内函数只能执行一次(输入框搜索自动补全事件、频繁点赞和取消点赞、提交事件等等)
  • 节流: 简单来说就是指连续触发事件但是在 n 秒中只执行一次函数(发送验证码、表单验证、鼠标移动事件等等)

小程序中使用 

封装文件 throttle.js(路径:/utils/throttle.js

/* 节流函数封装 */
function throttle(fn, gapTime) {
    if (gapTime == null || gapTime == undefined) {
        gapTime = 1500
    }
    let _lastTime = null
    // 返回新的函数
    return function () {
        let _nowTime = +new Date()
        if (_nowTime - _lastTime > gapTime || !_lastTime) {
            fn.apply(this, arguments) //将this和参数传给原函数
            _lastTime = _nowTime
        }
    }
}
/* 防抖函数封装 */
function debounce(fn, interval) {
    let timer;
    let delay = interval || 1000; // 间隔的时间,如果interval不传,则默认1秒
    return function () {
        let that = this;
        let args = arguments; // 保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。
        if (timer) {
            clearTimeout(timer);
        }
        timer = setTimeout(function () {
            fn.apply(that, args); // 用apply指向调用debounce的对象,相当于this.fn(args);
        }, delay);
    };
}
// 将写好的方法抛出
module.exports = {
    throttle,
    debounce
}

 使用的文件 home.wxml(路径:pages/home/home.wxml

<button bindtap="formSubmit">点击触发事件</button>

 使用的文件 home.js(路径:pages/home/home.js

- 防抖函数:

// 引入封装文件
var util = require('../../utils/throttle');
Page({
    data: {},
     // 调用防抖函数(触发事件后在1秒内函数只能执行一次)
     formSubmit: util.debounce(function () {
         console.log("'防抖函数'")
     }, 1000),
})

 

防抖函数实现效果

可以看到我们从一开始就疯狂点击,但是都没有触发打印,只有我们停下来后,才会触发最后一次点击事件。

微信小程序全局封装防抖节流函数,微信小程序,微信小程序,小程序

- 节流函数:

// 引入封装文件
var util = require('../../utils/throttle');
Page({
    data: {},
    // 调用节流函数(首次点击后触发打印,3秒内点击按钮都不会触发,3秒后再次点击触发)
    formSubmit: util.throttle(function (e) {
        console.log('节流函数');
    }, 3000),
})

节流函数实现效果

可以看到在我们第一次点击事件后,触发了打印,但当我们在3秒内又点击了几次都没有触发打印,3秒后再次点击才会触发。

微信小程序全局封装防抖节流函数,微信小程序,微信小程序,小程序文章来源地址https://www.toymoban.com/news/detail-824211.html

到了这里,关于微信小程序全局封装防抖节流函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序创建自定义全局函数及其调用方法

    一:创建小程序全局函数 1:在微信开发工具中增加一个JS文档, 放入全局全局函数 代码说明 1:全局函数只能放var定义的变量下,本例的var 变量为myFunction 格式为: var myFunction={ 在这里编写你的全局函数 } 你可以把myFunction理解为一个类,你的全局函数理解放类中的一个方法

    2024年02月09日
    浏览(34)
  • 手写一个防抖节流函数及其使用场景

      防抖和节流是性能优化手段 什么是防抖? 防抖:单位时间内,频繁触发事件,只执行最后一次。 防抖的主要应用场景: 搜索框搜索输入。只需用户最后一次输入完,再发送请求 手机号、邮箱验证输入检测 什么是节流? 节流:单位时间内,频繁触发事件,只执行一次。

    2024年02月09日
    浏览(30)
  • 记录--闭包,沙箱,防抖节流,函数柯里化,数据劫持......

    函数定义阶段 在堆内存中开辟一段空间 把函数体内的代码一模一样的存储在这段空间内 把空间赋值给栈内存的变量中 函数调用阶段 按照变量名内的存储地址找到堆内存中对应的存储空间 在调用栈中开辟一个新的函数执行空间 在执行空间中进行形参赋值 在执行空间中进行

    2024年02月05日
    浏览(34)
  • uni-app vue3 封装socket 兼容微信小程序 钉钉小程序 H5 App 全局唯一

    前端小伙伴使用uni-app开发长连接通信的时候都会有以下疑问 在网上搜到的封装socket都没讲怎么全局公用一个呢? 同一个 子协议或者我我们叫type类型型我想在两个页面都接受使用怎么做呢? 目前能搜到的socket 封装好像都没讲清楚这个东西,或者压根没考虑 下面给大家详细

    2024年02月13日
    浏览(37)
  • JS手写防抖和节流函数(超详细版整理)

    防抖(debounce) :每次触发定时器后,取消上一个定时器,然后重新触发定时器。防抖 一般用于用户未知行为的优化 ,比如搜索框输入弹窗提示,因为用户接下来要输入的内容都是未知的,所以每次用户输入就弹窗是没有意义的,需要等到用户输入完毕后再进行弹窗提示。

    2024年02月04日
    浏览(29)
  • vue项目使用lodash节流防抖函数问题与解决

    在lodash函数工具库中,防抖 _.debounce 和节流 _.throttle 函数在一些频繁触发的事件中比较常用。 创建一个 debounced(防抖动)函数,该函数会从上一次被调用后,延迟  wait  毫秒后调用  func  方法。 参数 func   (Function) : 要防抖动的函数。 [wait=0]   (number) : 需要延迟的毫秒数。

    2024年02月08日
    浏览(30)
  • 小程序如何使用防抖和节流?

    防抖(Debounce)和节流(Throttle)都是用来优化函数执行频率的技术,特别在处理用户输入、滚动等频繁触发的情况下,它们可以有效减少函数的执行次数,从而提升性能和用户体验。但它们的工作方式和应用场景有所不同。 防抖的主要思想是,当持续触发事件时,在事件最

    2024年02月13日
    浏览(26)
  • 微信小程序防抖

    微信小程序闭包-防抖 这里主要用到闭包,将函数内的值保存下来,下次点击的时候进入判断,如果定时器启动了,则清除定时器,直到最后一次启动定时器,也就是说,在规定的时间内只会触发最后一次定时器,从而达到防抖效果。 防抖的使用场景: 防止连续快速点击 防

    2024年02月16日
    浏览(23)
  • 微信小程序显示loading效果,微信小程序节流效果,微信小程序生命周期,微信小程序组件的创建与使用

            文档地址:wx.showLoading(Object object) | 微信开放文档         请求前 显示loading 效果 ,请求结束后隐藏loading         下拉触底需要时间比较长,但是可能会一直进行请求,我们可以 设置一个 加载状态 ,用来控制什么时候 才可以加载         当我们loading 效果为tr

    2024年02月10日
    浏览(33)
  • Vue 3 中的极致防抖/节流(含常见方式防抖/节流)

    各位朋友你们好呀。今天是立春,明天就是正月十五元宵节了,这种立春 + 元宵相隔的时候,可是很难遇到的,百年中就只有几次。在这提前祝大家元宵快乐。 今天给大家带来的是 Vue 3 中的极致防抖/节流(含常见方式防抖/节流) 这篇文章,文章中不仅会讲述原来使用的防

    2024年02月01日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包