uView节流防抖遇见的问题!

首先我在写的微信小程序使用uniapp+uview1.X

uview有内置的节流防抖函数,文档解释如下:

我在代码中很多地方为了避免按钮多次触发,使用了防抖函数。like this : @tap="$u.throttle(event, 1000)"

最近测试蓝牙打印的时候就发现了问题,一秒时间内点击3次,打印机在1s,2s,3s,分别吐了标签!所以这个防抖并没有按照文档说明的情况在执行。

看uview源码实现:

乍一看没有问题,函数怎么会执行3次呢?我的推测是这样(大家有不一样的见解欢迎指导):

理想情况每次调用是在一个作用域内,flag始终是同一作用域的flag。但看起来是三次调用大家使用的并不是一个flag,而是三个,他们各自形成了自己的作用域。

以上是我的推测,不一定对,但这个$u.throttle函数肯定是用不了,最后使用了lodash的防抖,leading:true立即执行。

			//引入
            import { debounce } from "lodash-es";
            //方法
            event: debounce(function() {
				...
			}, 2000, {
				leading: true
			})

最后,再来回顾一下节流和防抖的定义,加深理解。所以uView对节流防抖的解释就与大众的理解是反的,当然,它的实现也是反的。防止表单重复提交应该用的是防抖的概念,而不是节流!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值