微信小程序倒计时问题
最近写了一个微信小程序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
})

浙公网安备 33010602011771号