setTimeout()函数只执行一次
时间: 2023-07-04 17:12:45 浏览: 113
程序只能运行一次
5星 · 资源好评率100%
`setTimeout()` 函数只执行一次通常是因为您未使用循环或递归来重复调用 `setTimeout()` 函数。`setTimeout()` 函数仅在等待指定的时间后执行一次回调函数,因此如果您希望回调函数重复执行,您需要在回调函数中调用 `setTimeout()` 函数。
以下是一个简单的例子,演示如何使用循环来重复调用 `setTimeout()` 函数:
```
function repeatMessage(message, interval, times) {
let counter = 0
const intervalId = setInterval(() => {
console.log(message)
counter++
if (counter === times) {
clearInterval(intervalId)
}
}, interval)
}
repeatMessage('Hello, world!', 1000, 5)
```
在上面的例子中,我们定义了一个 `repeatMessage()` 函数,它会在指定的时间间隔内重复打印一条消息。我们使用 `setInterval()` 函数和一个计数器来定期执行回调函数。当计数器达到指定的次数时,我们使用 `clearInterval()` 函数取消计时器,以停止执行回调函数。
如果您希望使用递归来重复调用 `setTimeout()` 函数,可以将 `setTimeout()` 函数的回调函数中嵌套一个新的 `setTimeout()` 函数。以下是一个简单的例子:
```
function repeatMessage(message, interval, times) {
let counter = 0
function printMessage() {
console.log(message)
counter++
if (counter < times) {
setTimeout(printMessage, interval)
}
}
setTimeout(printMessage, interval)
}
repeatMessage('Hello, world!', 1000, 5)
```
在上面的例子中,我们定义了一个 `repeatMessage()` 函数,它会使用递归来重复打印一条消息。我们使用一个计数器和一个嵌套的 `setTimeout()` 函数来定期执行回调函数。当计数器达到指定的次数时,递归停止。
阅读全文