如何让我的程序继续超过setTimeout?

时间:2013-06-10 03:21:48

标签: javascript settimeout setinterval

所以我有一个递归调用自己的计时器:

function introAnimation()
{
    var ostream = document.getElementById('table');

    var newhtml = '<h1>Ready?</h1><br/>';
    newhtml += '<h1>' + countdown-- + '</h1>';

    ostream.innerHTML = newhtml;

    if (countdown > 0)
        var a = setTimeout(function() {introAnimation()}, 1000);

}

但问题是程序在完成计时器之前继续运行。有没有办法让所有其他进程继续运行直到指定的函数停止?

1 个答案:

答案 0 :(得分:0)

  

有没有办法让所有其他进程继续运行直到指定的函数停止?

是和否。方式是无限循环(while(true) ;),但这是不受欢迎的,因为它会冻结您的浏览器并且永远停止(因为超时不能拦截正在运行的函数)。所以你应该没有。你真正想要的是:

  

如何推迟我的程序在超时后继续?

使用回调。你已经在introAnimation中使用了它,所以它应该不难。将该功能更改为

function introAnimation(callback) {
    var ostream = document.getElementById('table');

    var newhtml = '<h1>Ready?</h1><br/>';
    newhtml += '<h1>' + countdown-- + '</h1>';

    ostream.innerHTML = newhtml;

    if (countdown > 0)
        var a = setTimeout(function() {introAnimation(callback)}, 1000);
    else
        callback();
}

和你的程序来自

introAnimation();
// rest of program

introAnimation(function() {
    // part of the program that should run when the itro is done
});
// part of the programm that runs during the intro animation
// (might be nothing)