如何清除 setInterval

阅读时长 3 分钟读完

在前端开发中,我们常常需要使用 setInterval 来定时执行某些操作,例如轮播图、倒计时等。但是,在某些场景下,我们需要停止或清除 setInterval 的执行,这时就需要用到如下方法。

clearInterval()

clearInterval() 方法可以取消先前由 setInterval() 方法设定的循环定时任务。它接受一个参数,该参数是一个表示要清除的定时器标识符的数字 ID。

示例代码:

-- -------------------- ---- -------
-- -----
----- ------- - -------------- -- -
  ------------------- ---------
-- ------

-- - -------
------------- -- -
  -----------------------
-- ------

在上面的示例代码中,我们首先声明了一个每秒输出一次 'Hello, world!' 的定时器,并将其 ID 存储在 timerId 变量中。然后,我们使用 setTimeout() 方法来在 5 秒后清除定时器。

使用闭包

除了使用 clearInterval() 方法外,我们还可以使用闭包来实现类似的效果。使用闭包的好处是可以避免污染全局命名空间,同时也更便于管理多个定时器。

示例代码:

-- -------------------- ---- -------
-------- ------------- -
  --- ----- - --
  
  ----- ------- - -------------- -- -
    --------
    ------------------- -----------
  -- ------
  
  ------ -- -- -----------------------
-

----- --------- - --------------

-- - -------
--------------------- ------

在上面的示例代码中,我们定义了一个名为 createTimer() 的函数。该函数内部声明了一个变量 count 和一个每秒自增 count 并输出的定时器。然后,它返回了一个函数,该函数调用 clearInterval() 方法来清除定时器。

最后,我们通过调用 createTimer() 函数来创建一个新的定时器,并将其返回值存储在 stopTimer 变量中。之后,我们使用 setTimeout() 方法来在 5 秒后停止定时器。

总结

清除 setInterval 循环定时任务可以使用 clearInterval() 方法或者使用闭包实现。使用闭包的好处是可以避免全局命名空间污染,并且更便于管理多个定时器。在实际开发中,根据具体场景选择合适的方法进行处理即可。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/9828

纠错
反馈