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
				   
				  }
			  
			}

		}
posted @ 2020-12-10 17:20  Twoknives_li  阅读(420)  评论(0)    收藏  举报