所以我有一个递归调用自己的计时器:
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);
}
但问题是程序在完成计时器之前继续运行。有没有办法让所有其他进程继续运行直到指定的函数停止?
答案 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)