我正在尝试使用 JavaScript 使用递归 setInterval 函数每 5 秒运行一次函数。
以下代码尽可能快地记录“已启动”,然后使浏览器崩溃。为什么这不是每 5 秒运行一次?
function five() {
console.log("five");
setInterval(five(), 5000);
}
five();
我正在尝试使用 JavaScript 使用递归 setInterval 函数每 5 秒运行一次函数。
以下代码尽可能快地记录“已启动”,然后使浏览器崩溃。为什么这不是每 5 秒运行一次?
function five() {
console.log("five");
setInterval(five(), 5000);
}
five();
不要以这种方式使用 setInterval。使用设置超时。通过调用 setInterval,您可以在每次调用该函数时创建一个 UNIQUE 计时器。SetTimeout 将创建一个结束的计时器,然后创建一个新的计时器。
您还应该更改引用方式five
。five()
立即执行函数。只需five
传递一个函数引用,如下所示。
function five() {
console.log("five");
setTimeout(five, 5000);
}
five();
当然,您始终可以将函数调用作为要评估的字符串传递:
setTimeout("five()", 5000); // note the quotes
但这通常被认为是不好的做法。
您立即致电 five
,而不仅仅是将其传入:
function five () {
console.log("five");
}
setInterval(five, 5000);
/* ^ */
更改此行:
setInterval(five(), 5000);
像这样:
setInterval(five, 5000);
但似乎你真正需要的是:
setTimeout(five, 5000);
所以你的代码看起来像:
function five() {
console.log("five");
setTimeout(five, 5000);
}
five();
崩溃的原因是你正在调用函数五。相反,您应该将其作为参数传递。
setInterval(five, 5000);