微信小程序倒计时问题

最近写了一个微信小程序24小时倒计时,一般情况下没问题,但是一刷新,倒计时原本是一秒减一次变成了一秒减两次,刷新次数越多,减的数字也越多,后来查了一下原因,发现是刷新时倒计时没有停止,新的倒计时和旧的倒计时重叠,所以就出现了这种问题。

修改后的代码如下,可以封装成一个方法,每次倒计时调用那个方法就可以了:

// 判断有没有倒计时,有的话先停止,在走倒计时
if (this.data.interval) {
//不能直接写 clearInterval(this.data.interval) 不然因为this指向问题,无法停止倒计时
let stopCountDown = this.data.interval;
clearInterval(stopCountDown);
}

var interval = setInterval(() => {
// this.data.countDownTime 值为 24:00:00
var [hours, minutes, seconds] = this.data.countDownTime.split("😊.map(Number);
var secondsNum = hours * 3600 + minutes * 60 + seconds; //获取总秒数

// 秒数为0,倒计时结束
if (secondsNum == 0) {
clearInterval(interval)
this.setData({
countDownTime = "00:00:00"
})
}

secondsNum = secondsNum - 1; //总秒数减1
var HH = Math.floor(secondsNum / 3600).toString().padStart(2, "0"); //获取小时
var MM = Math.floor((secondsNum % 3600) / 60).toString().padStart(2, "0"); //获取分钟
var SS = Math.floor(secondsNum % 60).toString().padStart(2, "0"); //获取秒数
this.setData({
countDownTime = ${HH}:${MM}:${SS}
})
}, 1000)
// 把倒计时存起来
this.setData({
interval: interval
})

posted @ 2025-02-25 16:33  visualStudioCode  阅读(93)  评论(0)    收藏  举报