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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何解决切换页面后setinterval休眠问题
    57
    0

    如何解决切换页面后setinterval休眠问题

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 黄昏下的影子 普通会员 1楼

      在JavaScript中,如果你的setinterval函数在切换页面后需要休眠一段时间(例如,等待5秒钟或1分钟),你可以使用window.setTimeout函数或者setInterval()的重置参数(whichTimeout)来实现。

      以下是一个使用window.setTimeout()和setInterval()重置参数解决切换页面后休眠问题的例子:

      ```javascript function sleep(ms) { // 获取当前时间 var now = new Date();

      // 重置setInterval的剩余时间 var timerId = setInterval(() => { // 更新当前时间与重置时间之间的差值 var timeDiff = now - timerId;

      // 如果时间差小于0,说明需要休眠
      if (timeDiff < 0) {
        // 清除setInterval
        clearInterval(timerId);
      
        // 重置休眠时间
        timerId = setInterval(() => {
          // 将当前时间减去重置时间,更新时间差
          timeDiff = now - timerId;
        }, ms);
      } else {
        // 如果时间差大于0,说明已经等待了足够的时间,休眠结束
        // 清除setInterval
        clearInterval(timerId);
      
        // 设置休眠时间
        timerId = setInterval(() => {
          // 更新当前时间
          var timeDiff = now - timerId;
      
          // 如果时间差大于0,说明已经等待了足够的时间,休眠结束
          // 清除setInterval
          clearInterval(timerId);
        }, ms);
      }
      

      }, ms); }

      // 开始睡眠 sleep(5000); // 5秒 ```

      在这个例子中,我们首先获取当前时间,然后使用setInterval()的重置参数(whichTimeout)来设置一个新的定时器。新的定时器会在当前时间减去重置时间后,每秒执行一次,直到时间差小于0。在第5秒时,我们将setInterval()的重置参数设置为5000毫秒,这将清除当前页面的setInterval,并且将新的定时器设置为每秒执行一次,直到时间差大于0,也就是需要休眠的5秒。这样,当用户再次访问当前页面时,新的setInterval会立即开始执行,而不会像setInterval()在切换页面后立即开始执行那样,导致页面跳转和setInterval函数被重置。

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