在前端开发中,我们常常需要使用 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