首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Javascript :停止使用clearInterval时setInterval计时器无法再次重新启动

在JavaScript中,clearInterval函数用于停止通过setInterval函数创建的定时器。当我们调用clearInterval函数时,它会取消先前通过setInterval创建的定时器,并且定时器不再触发。

如果在停止定时器后想要重新启动定时器,可以通过以下几种方式解决:

  1. 将setInterval函数的返回值存储在一个变量中,并使用clearInterval取消定时器时,同时将变量赋值为null。这样,在重新启动定时器时,可以检查变量是否为null,如果为null,则重新调用setInterval函数。
代码语言:txt
复制
let timer = null;

function startTimer() {
  if (timer === null) {
    timer = setInterval(function() {
      // 定时器逻辑
    }, 1000);
  }
}

function stopTimer() {
  if (timer !== null) {
    clearInterval(timer);
    timer = null;
  }
}
  1. 将定时器逻辑封装到一个函数中,并使用条件判断来控制定时器的启动和停止。可以使用一个变量来表示定时器的状态,当定时器启动时,将变量设置为true,当定时器停止时,将变量设置为false。
代码语言:txt
复制
let isTimerRunning = false;

function timerLogic() {
  // 定时器逻辑
}

function startTimer() {
  if (!isTimerRunning) {
    setInterval(timerLogic, 1000);
    isTimerRunning = true;
  }
}

function stopTimer() {
  if (isTimerRunning) {
    clearInterval(timer);
    isTimerRunning = false;
  }
}

无论选择哪种方式重新启动定时器,都需要确保在停止定时器后再次启动之前,定时器已经被清除。这样可以避免重复启动定时器导致的问题,确保定时器的准确性和可靠性。

对于腾讯云相关产品和产品介绍的链接地址,请参考腾讯云官方文档或相关技术论坛以获取最新的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 小程序倒计时深究

    因为请求数据写在onShow 函数里面,所以每次切换界面都会刷新,这就会导致,如果当前 定时器在跑的话,再次刷新会再次常见定时, 那么就会导致刷新几次有几个定时器,同时在跑,那么前端界面显示的计时数字 就会不时跳动,所以需要保证在跑的定时器只有一个。将定时器对象创建为全局的,在每次开启定时器的时候先清空之前的定时器。就可以解决刷新后计时闪动的问题了,或者在在tab页面,运用 onHide 周期 进行 clearTimeInterval清空 , 在 非tab页面,运用onUload() 周期 进行 clearTimeInterval清空,百度都可以找到类似解决方案,其中在我的历史文章小程序实战踩坑之B2B商城项目总结也有总结,代码类似如下:

    02

    vue+element踩坑记-公共组件里面做一个计时器

    我在做自助机入住的业务的时候,有这样的一个情况,用户在没一个页面都需要自己操作,例如:预定,刷身份证,输入订单号,人脸识别等等操作,每一个页面都需要一定的时间进行操作,但是会有一种情况,刷身份证的时候,我是页面进来的时候就通知安卓调取硬件的信息,进行身份识别,这个时候安卓那边会告诉我有没有读取成功,如果没有我继续发送读取的请求,在机器没有故障的情况下,直到读取成功才停止,但是如果客户今天没有拿身份证呢?他走了,因为是自助机,所以是没有服务员的,那么如果有素质的顾客是会直接点击回到主页就走的,这样不会影响别的客户使用,那么如果他没有点击,那么就会一直请求按照调取硬件识别身份证的操作,这样显然是不行的,所以我需要做的是每一个页面进来的时候就开始计时90秒,如果90秒以内客户还没有操作结束,我就认为他不再操作了,直接返回到主页。今天就简单的记录一下我实现的过程!

    02

    JS设置定时器_js设置定时器

    每个JS定时器产生时会被系统分配一个id,这个id是正整数,而且一个页面里面的定时器id不重复,我们能用一个变量接收这个id,但是如果重复执行一条接收创建语句,那么你只能接收到最新创建的定时器的id,之前创建的定时器的id会被覆盖,但是定时器数量在增加,这就会导致界面一些功能错乱,解决方法就是在重复按开始按钮时,如果已经有了一个定时器那么就不执行语句,我列出了错误代码和三种解决方法,可以解决定时器重复创建问题。 ps:定时器id的配发是递增的,从1开始累加,但是有一个小细节,就是当你在一次页面运行的过程中,打个比方,你创建了第五个定时器,它的id为5,然后你把它销毁,再创建一个定时器,那么这个定时器的编号会是6,而不是5,5号id是不会因为第五个定时器器的销毁而可以被再次使用。

    03
    领券