setInterval()导致最大堆栈调用大小超出错误?

时间:2017-01-21 19:00:48

标签: javascript jquery

我超过#34;最大堆栈通话大小超过"运行下面的代码一段时间后出错。 select_related应该能够无缝地递归运行,因此我还不确定错误是由它还是代码的其他部分引起的。

setInterval()

这是代码的最后一部分。但我没有上面的部分测试它没有问题。无论如何,现在我不确定。

function blinkCursor() {
    $("#cursor").animate({opacity: 0}).animate({opacity: 1});
} setInterval(blinkCursor, 600);

2 个答案:

答案 0 :(得分:4)

animate()默认持续时间为400.

您在动画完成之前很久就会调用函数,并不断添加到永不停止增长的动画队列中。

400 + 400 = 800 ...当前使用的间隔大于600

更好的方法是使用上一个动画回调来初始化下一轮而不是使用setInterval

function blinkCursor() {
    $("#cursor").animate({opacity: 0}).animate({opacity: 1}, blinkCursor );
}
blinkCursor(); // initialize once

答案 1 :(得分:0)

您似乎正在尝试实现打字机效果。这只能使用CSS完成。除非您支持IE7等旧浏览器,否则无需为此编写JavaScript。

查看以下链接:

https://css-tricks.com/snippets/css/typewriter-effect/

相关问题