我想在JavaScript中创建一个循环,我希望函数timeLoop()被调用10秒然后停止。我试图用setInterval来做到这一点,但似乎它不会等待我设置的超时时间,无论我设置超时时间有多大。每次我运行它时,我总是得到:RangeError:最大调用堆栈大小超出不知道如何创建一个定时循环,在执行之前等待一段时间。Javascript超时循环不会等待
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()'](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval)期望的间隔ID作为其参数。 'setInterval()'提供给你作为它的返回值。不过,你必须存储它。 ([示例](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval#Example_2_Alternating_two_colors)) –
@zerkms,这不是一个重复的问题。它有一个看起来像另一个的问题,但原因是不一样的。这段代码中的问题是错误地使用了'clearInterval'。 –
@DiegoZoracKy它实际上都是这样,并且'clearInterval'的问题已经在其他评论中得到澄清。请提供更好的答案。 – zerkms