uniapp js 按钮 点击事件 防抖节流 防抖和节流事件的触发

2 篇文章 0 订阅

uniapp中,有时也需要用到防抖与节流这两种事件。方法思路与web端的思路一致。

防抖:在此时间段触发几次事件,就延迟触发几次,并只触发最后一次事件。(一直快速触发几分钟后停止,也只执行最后的那一次事件)

节流:在规定时间内仅能触发一次,但到了下一个时间段,也还会继续触发一次,执行新的事件。

示例:直接放入vue文件并运行即可。

<template>
	<view class=”fanjun-jsSkill”>
		<view class=”oneSkill”>
			<view class=”fdButton btn” @click=”fd”>
				防抖按钮
			</view>
			<view class=”jlButton btn” @click=”jl”>
				节流按钮
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				fdFlag: null,
				jlFlag: true
			}
		},
		methods: {
			fd() {
				let that = this
			    clearTimeout(this.fdFlag)
				this.fdFlag = setTimeout(() => {
					that.fdDoing()
					that.fdFlag = null
				}, 800)
				// 在此时间段触发几次事件,就延迟触发几次,并只触发最后一次事件。
			},
			fdDoing() {
				console.log(‘防抖事件触发’)
			},
			jl() {
				let that = this
				if(!this.jlFlag) {
					return
				}
				this.jlFlag = false
				setTimeout(() => {
					that.jlDoing()
					that.jlFlag = true
				},1200)
				// 一定时间内,只执行一次有效事件
			},
			jlDoing() {
				console.log(‘节流事件触发’)
			}
		}
	}
</script>

<style>
	.oneSkill {
		display: flex;
		flex-direction: row;
		justify-content: space-around;
	}

	.btn {
		width: 160rpx;
		height: 46rpx;
		background-color: #007AFF;
		color: #FFFFFF;
		border-radius: 20rpx;
		text-align: center;
		line-height: 46rpx;
		vertical-align: middle;
	}
</style>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值