使用setTimeout()可以在指定的时间启动一个函数:

setTimeout(function, 60000);

但是如果我想多次启动这个函数呢?每当一个时间间隔过去时,我都希望执行函数(假设每60秒执行一次)。


当前回答

一个订阅setInterval()并使用clearInterval()来停止永久循环的好例子:

function myTimer() {

}

var timer = setInterval(myTimer, 5000);

调用这一行来停止循环:

clearInterval(timer);

其他回答

// example:
// checkEach(1000, () => {
//   if(!canIDoWorkNow()) {
//     return true // try again after 1 second
//   }
//
//   doWork()
// })
export function checkEach(milliseconds, fn) {
  const timer = setInterval(
    () => {
      try {
        const retry = fn()

        if (retry !== true) {
          clearInterval(timer)
        }
      } catch (e) {
        clearInterval(timer)

        throw e
      }
    },
    milliseconds
  )
}

一个订阅setInterval()并使用clearInterval()来停止永久循环的好例子:

function myTimer() {

}

var timer = setInterval(myTimer, 5000);

调用这一行来停止循环:

clearInterval(timer);

我看到这里没有提到,如果你需要在重复setTimeout(myFunc(myVal), 60000)上传递一个参数给你的函数;将导致在前一个调用完成之前调用函数的错误。

因此,您可以像这样传递参数

setTimeout(function () {
            myFunc(myVal);
        }, 60000)

有关更详细的信息,您可以查看JavaScript花园。

希望它能帮助到一些人。

使用

setInterval(function, 60000);

编辑:(如果你想在时钟启动后停止它)

脚本部分

<script>
var int=self.setInterval(function, 60000);
</script>

及HTML代码

<!-- Stop Button -->
<a href="#" onclick="window.clearInterval(int);return false;">Stop</a>
setInterval(fn,time)

是你所追求的方法。