解决Vue/小程序中 针对数组(列表) 实现倒计时 倒数效果越来越快的问题

本文探讨了Vue.js中使用watch监听list时出现的倒计时速度逐渐加快的问题,并提供了一种有效的解决方案。通过修改倒计时逻辑,避免了因多次触发watch而导致的错误,确保了倒计时功能的正确运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你可能会使用watch监听list

由于watch监听数据变化,对数据进行遍历时,当只有一个item符合条件时倒计时正常,一旦多个item符合条件,if语句内执行了一次以上,由于多个item发生改变会多次触发watch,导致倒计时越来越快,

错误效果

这里写图片描述

	watch={
		List(val){
			//var timer = setInterval(()=>{ 
			var timer = setTimeout(()=>{     
				val.forEach((item)=>{
					if(item.button_mark===0 && item.count_down>0){
						item.count_down--; 
						
						this.$apply()	
					}
				})
				timer = null;
			},1000)
		}
	}

解决办法

#####正确效果
这里写图片描述

1.添加method countDown作用于list
	countDown(List){
		setInterval(()=>{
			for(var index in list)
			{
				if(list[index].button_mark===0 && list[index].count_down>0){
					 list[index].count_down--;	
				}
			}
			this.$apply()
		},1000)

	}
	this.countDown(List);
如果觉得我的文章对你有帮助,欢迎关注我的blog

相关知识点

【Javascript】深入理解async/await的实现,Generator+Promise = Async/Await
【Javascript】深入理解this作用域问题以及new运算符对this作用域的影响
【Javascript】手写运算符new创建实例并实现js继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值