在JavaScript中,setInterval()是一个非常方便的函数,它可以用来重复执行一个指定的函数,每隔一段固定的时间间隔就会执行一次。然而,有时候我们需要停止执行这个函数,就要用到停止setInterval()的方法了。
本文将引导您在不同情况下正确停止setInterval()函数。
一、使用clearInterval()
当需要停止setInterval()函数时,最常用的方法是使用 clearInterval() 函数,它的作用是取消setInterval()函数的执行。
语法:
clearInterval(intervalID);
intervalID:指 setInterval() 返回的 ID 值。这个值可以通过调用 setInterval() 函数将返回的交给变量保存。
示例代码:
```javascript
// 定义计数器
var count = 0;
// 定义重复执行函数
function repeat() {
console.log(count++);
// 每秒执行一次 repeat 函数
var intervalID = setInterval(repeat, 1000);
// 5s 后停止 repeat 函数的执行
setTimeout(function() {
clearInterval(intervalID);
console.log('repeat stopped!')
}, 5000);
```
此处我们定义了一个计数器 count 和一个重复执行函数 repeat()。然后使用 setInterval() 每秒执行一次 repeat() 函数。
在5秒后,使用 clearInterval() 函数停止 repeat() 函数的执行,并打印 'repeat stopped!' 到控制台。
二、利用变量标记
在某些情况下,我们可能需要在特定的条件下停止setInterval()函数的执行。在这种情况下,将 setInterval() 的返回值保存到变量中,然后每次执行函数时检查变量值是否符合指定条件,如果是,则使用 clearInterval() 停止执行。
示例代码:
```javascript
// 定义计数器
var count = 0;
// 定义重复执行函数
function repeat() {
console.log(count++);
if(count === 5) {
clearInterval(intervalID);
console.log('repeat stopped!')
// 每秒执行一次 repeat 函数
var intervalID = setInterval(repeat, 1000);
```
此处,我们定义了一个计数器 count 和一个重复执行函数 repeat()。然后使用 setInterval() 每秒执行一次 repeat() 函数。
在执行每次重复函数时,我们检查计数器是否等于 5。如果等于,则使用 clearInterval() 函数停止 repeat() 函数的执行,并打印 'repeat stopped!' 到控制台。
三、使用setTimeout()
我们也可以使用 setTimeout() 函数通过将重复函数本身作为参数,来停止与该函数关联的setInterval()函数。
示例代码:
```javascript
// 定义计数器
var count = 0;
// 定义重复执行函数
function repeat() {
console.log(count++);
if(count === 5) {
console.log('repeat stopped!');
} else {
setTimeout(repeat, 1000);
// 调用 repeat 函数
repeat();
```
此处,我们定义了一个计数器 count 和一个重复执行函数 repeat()。然后使用 setTimeout() 函数调用 repeat() 函数。
在执行 repeat 函数时,我们检查计数器是否等于 5。如果等于,停止函数的继续执行,否则使用 setTimeout() 函数继续执行 repeat 函数。
四、使用回调函数
当我们需要停止重复执行的函数的同时也需要执行一些其他的回调函数时,可以使用这个方法。回调函数会在setInterval()函数执行停止后立即执行。
示例代码:
```javascript
// 定义计数器
var count = 0;
// 定义重复执行函数
function repeat(callback) {
console.log(count++);
if(count === 5) {
clearInterval(intervalID);
console.log('repeat stopped!');
callback();
// 定义回调函数
function finished() {
console.log('finished');
// 每秒执行一次 repeat 函数
var intervalID = setInterval(repeat.bind(null, finished), 1000);
```
此处,我们定义了一个计数器 count 和一个重复执行函数 repeat(callback)。然后我们使用 setInterval() 每秒执行一次 repeat() 函数,并绑定了一个回调函数 finished()。
在执行 repeat 函数时,我们检查计数器是否等于 5。如果等于,停止函数的继续执行,然后调用回调函数 finished()。
这样,当重复执行的函数停止执行后,回调函数会立即执行。
总结
setInterval() 函数是JavaScript中的一个非常常用的函数。当需要停止它时,可以使用 clearInterval() 函数、利用变量标记、使用 setTimeout() 函数或者使用回调函数。
以上是四种不同的停止setInterval()函数的方法,开发者可以依据实际情况选择自己使用的方法。