账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue 倒计时结束之后“刷新页面“造成死循环
    • 2020-01-01 00:00
    • 11
    73
    0

    //倒计时

    countDown() {
      let count = 0;
      let newTime = new Date().getTime();
      let endTimeList = this.actEndTimeList;
      let countDownArr = [];
      endTimeList.forEach(o => {
        let endTime = new Date(o).getTime();
        let obj = null;
        if (endTime - newTime > 0) {
          let time = (endTime - newTime) / 1000;
          let day = parseInt(time / (60 * 60 * 24));
          let hou = parseInt((time % (60 * 60 * 24)) / 3600) + day * 24;
          let min = parseInt(((time % (60 * 60 * 24)) % 3600) / 60);
          let sec = parseInt(((time % (60 * 60 * 24)) % 3600) % 60);
          obj = {
            hou: this.timeFormat(hou),
            min: this.timeFormat(min),
            sec: this.timeFormat(sec)
          };
        } else {
          obj = {
            hou: "00",
            min: "00",
            sec: "00"
          };
          count++;
        }
        countDownArr.push(obj);
      });
      this.countDownList = countDownArr;
      this.interval = setTimeout(this.countDown, 1000);
      if (count == endTimeList.length) {
        if (this.interval) {
          clearTimeout(this.interval);
          //这一块死循环
          this.$router.go(0)
        }
      }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    2
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • ヒ─━═昔吡ε 普通会员 1楼

      在 Vue 中,如果组件在倒计时结束后仍然等待页面加载完成,那么就会造成死循环。这通常是由于数据循环或者订阅问题引起的。下面是一些可能的原因和解决方案:

      1. v-ifv-for 过于依赖于视图更新,导致视图更新时无法刷新整个页面。

      解决方案:在组件中使用 v-ifv-for 来控制视图的更新,而不是依赖于视图更新。这样,当倒计时结束后,整个页面都会刷新。

      1. 数据循环:如果你在 Vue 中使用了循环数据(例如使用 v-for 或者自定义循环),并且在每次循环结束时都调用了某个方法来刷新页面,那么在倒计时结束后,整个页面都会刷新。

      解决方案:在组件中使用 setTimeout 或者 window.addEventListener 来定时刷新页面。这样,即使在倒计时结束后,页面也不会被完全刷新。

      1. 依赖注入:如果你在 Vue 中使用了依赖注入(例如使用 @vue/cli-service 的服务注入),那么在倒计时结束后,整个页面都不会被完全刷新。

      解决方案:确保在倒计时结束后,组件的父组件已经触发了数据更新或者手动刷新页面。例如,你可以使用 this.$emit('data-updated') 来触发数据更新,或者使用 window.location.reload() 来手动刷新页面。

      如果你尝试了以上解决方案,但问题仍然存在,那么可能是其他的问题。请提供更多详细信息,例如你的 Vue 代码、你的项目结构、以及你遇到的具体问题。这样,我才能提供更准确的帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部