jQuery:无限循环过程

时间:2014-06-15 19:39:00

标签: javascript jquery

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

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

浏览器说已经完成了太多次。所以我不明白幻灯片是怎么做的。如何无限地回调函数,以免它破坏? (当然,我设置了一个setTimeout,否则它太快了)

1 个答案:

答案 0 :(得分:5)

如果您只想尽可能快地无限地呼叫helloworld,请写一个循环:

while(true) {
    helloworld();
}

请注意,这将阻止您的程序在外部通知任何其他输入或事件。您将不得不在循环中编写额外的代码来检查外部世界中发生了什么。如果您想以某种受控速率无限拨打helloworld(并允许您的程序处理其他事件),请使用setInterval

var theIntervalHandle = setInterval(helloworld, someDelayValue);

function helloworld() {
    // whatever

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

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