clearInterval取消定时器不生效,以及秒杀倒计时
做wifi定位时候发现clearInterval有时候会失效,比如连续点击开始时,最后发现每次启动定时器时先取消一次就好。个人理解是多次执行setInterval时候每次返回的id被新的id覆盖,而旧的方法还没被终止,点击终止时候只能暂停最后一些生成的id,所以每次创建定时任务时候把之前的终止就好了
let that = this;
clearInterval(that.data.timeInterval)//停止之前的定时器
// that.do_get_wifi_list()
that.data.timeInterval=setInterval(function(){
that.setData({
wifiListNum :0,
wifiList:[]
})
},1000)
倒计时
今天处理商城一个倒计时,没使用插件,大概是这个效果。

原理的话是依赖定时器,重复获取当前时间跟指定时间的相差,并转换时分秒展示
onLoad() {
clearInterval(this.timeInterval)//停止之前的定时器
this.countDown()
// this.timeInterval = setInterval(()=>{
// this.countDown() // 执行倒计时函数
// },1000)
},
methods: {
// 倒计时
countDown(){
var date= new Date();
var now = date.getTime();//获得当前时间的时间戳,毫秒
var start='2021-03-30 15:39:10';
var endDate=new Date(start);
var end = endDate.getTime(start);//结束时间与1970年1月1日时间相差的毫秒数
var leftTime = end-now;//计算两日期之间相差的毫秒数
if (leftTime >= 0) {
let dd = Math.floor(leftTime/1000/60/60/24);
let hh = Math.floor(leftTime/1000/60/60%24);
let mm = Math.floor(leftTime/1000/60%60);
let ss = Math.floor(leftTime/1000%60);
// console.log(this.dd+'天'+this.hh+'时'+this.mm+'分'+this.ss+'秒')
dd < 10 ? dd = '0' + dd : dd = dd; // 天
hh < 10 ? hh = '0' + hh : hh = hh; // 时
mm < 10 ? mm = '0' + mm : mm = mm; // 分
ss < 10 ? ss = '0' + ss : ss = ss; // 秒
// console.log(dd + '天' + hh + '时' + mm + '分' + ss + '秒');
this.dd = dd
this.hh = hh
this.mm = mm
this.ss = ss
}
}
}

浙公网安备 33010602011771号