【发布时间】:2016-09-15 02:36:42
【问题描述】:
我正在尝试在 javascript 中创建一个循环,我希望函数 timeLoop() 被调用 10 秒然后停止。我正在尝试使用 setInterval 执行此操作,但无论我设置的超时时间有多大,它似乎都不会等待我设置的超时。每次我运行它时,我都会收到: RangeError: Maximum call stack size exceeded 不知道如何创建一个在执行前等待一段时间的定时循环。
var seconds = new Date().getSeconds();
var mainFunc = function () {
console.log("Time: " + seconds);
timeLoop();
}
var timeLoop = function () {
var newTime = new Date().getSeconds();
var timer = newTime - seconds;
console.log("New Time: " + newTime + " Elapsed time: " + timer);
if(timer == 10) {
clearInterval(timeLoop());
return console.log("Times up 10 seconds!");
}
setInterval(mainFunc(), 10000);
}
mainFunc();
【问题讨论】:
-
旁注:
clearInterval()需要一个区间 ID 作为其参数。setInterval()将其作为返回值提供给您。但是,您必须将其存储起来。 (example) -
@zerkms,这不是一个重复的问题。它有一个看起来像另一个的问题,但原因不一样。这段代码中的问题是关于
clearInterval的错误使用。 -
@DiegoZoracKy 实际上两者都是,
clearInterval的问题已经在另一条评论中得到澄清。请提供更好的答案。 -
解决了!非常感谢!
-
@DiegoZoracKy 还看到 OP 可以根据重复 + 评论解决他们的问题 :-)
标签: javascript loops settimeout