Javascript jQuery:无限循环过程

Javascript jQuery:无限循环过程,javascript,jquery,Javascript,Jquery,事情是在某个对象上做一个无限循环(传递图像、更改背景颜色等)。当我回调函数时: function helloworld() { alert("hello, world!"); helloworld(); } 浏览器说它已经做了太多次了。所以我不明白幻灯片是怎么做的。我怎样才能无限地调用一个函数,使它不会中断?(当然,我会设置一个setTimeout,否则它太快了)如果您只想无限快地调用helloworld,请编写一个循环: while(true) { helloworl

事情是在某个对象上做一个无限循环(传递图像、更改背景颜色等)。当我回调函数时:

function helloworld() {
    alert("hello, world!");
    helloworld();
}

浏览器说它已经做了太多次了。所以我不明白幻灯片是怎么做的。我怎样才能无限地调用一个函数,使它不会中断?(当然,我会设置一个setTimeout,否则它太快了)

如果您只想无限快地调用
helloworld
,请编写一个循环:

while(true) {
    helloworld();
}
请注意,这将防止您的程序收到任何其他输入或正在发生的事件的外部通知。您必须在循环中编写额外的代码来检查外部世界发生了什么。如果要以某种受控速率无限调用
helloworld
(并允许程序处理其他事件),请使用
setInterval

var theIntervalHandle = setInterval(helloworld, someDelayValue);

function helloworld() {
    // whatever

    if(readyToStopCallingHelloWorld) {
        clearInterval(theIntervalHandle);
    }
}

编辑:如果您对技术细节感兴趣,请注意它不是真正的递归。递归就是您在原始示例中所做的,正如您的浏览器告诉您的那样,最终会耗尽堆栈空间。这些示例只是一遍又一遍地调用
helloworld
,而不是递归到其中。如果您感兴趣,您可能想了解递归。

如果您只想以尽可能快的速度调用
helloworld
,请编写一个循环:

while(true) {
    helloworld();
}
请注意,这将防止您的程序收到任何其他输入或正在发生的事件的外部通知。您必须在循环中编写额外的代码来检查外部世界发生了什么。如果要以某种受控速率无限调用
helloworld
(并允许程序处理其他事件),请使用
setInterval

var theIntervalHandle = setInterval(helloworld, someDelayValue);

function helloworld() {
    // whatever

    if(readyToStopCallingHelloWorld) {
        clearInterval(theIntervalHandle);
    }
}

编辑:如果您对技术细节感兴趣,请注意它不是真正的递归。递归就是您在原始示例中所做的,正如您的浏览器告诉您的那样,最终会耗尽堆栈空间。这些示例只是一遍又一遍地调用
helloworld
,而不是递归到其中。如果你感兴趣,你可能想了解递归。

你说setTimeout太快是什么意思?不,我的意思是,如果没有它,它将是一个非常快的可视化过程,@greatbigbore你是说setTimeout太慢了吗?不,只是在有了这个东西之后,我会添加setTimeout,让它以正确的速度通过,除此之外,:)这并不重要,我只想立即调用您正在调用的代码
helloworld()
,而不是使用
setTimeout
延迟执行。例如,您应该执行
setTimeout(helloworld,2000)
以使用2秒延迟。或者使用
setInterval()
并摆脱递归调用你说setTimeout太快是什么意思?不,我的意思是,如果没有它,它将是一个非常快的可视化过程,@greatbigbore你是说setTimeout太慢了吗?不,只是在有了这个东西之后,我会添加setTimeout,让它以正确的速度通过,除此之外什么都没有:)这不重要,我只想立即调用您正在调用的代码
helloworld()
,而不是使用
setTimeout
延迟执行。例如,您应该执行
setTimeout(helloworld,2000)
以使用2秒延迟。或者使用
setInterval()
并摆脱递归call@JuanRocamonde哎呀,我误解了。我以为你不懂递归。我现在意识到你知道了。我会把编辑留在那里,以防其他人发现它们有用。@JuanRocamonde哇,我误解了。我以为你不懂递归。我现在意识到你知道了。我会把编辑留在那里,以防其他人发现它们有用。