我有三个函数:第一个是setTimeout在内的时钟,第二个是当时钟到达零时调用的函数,其中setInterval在内,第三个是当第二个的setInterval被清除并调用另一个时调用的函数清除时间间隔再次呼叫时钟。功能链起作用但很快加速了时钟,我不知道为什么。
var secs=8;
function clock(){
secs--;
var timer=setTimeout(clock,1000);
document.getElementById('clock').innerHTML = 'Clock: ' + secs;
if(secs==0){
clearTimeout(timer);
noEvent();
}
}
function noEvent(){
var count=10;
var timer1=setInterval(function(){
// do something
count--;
if(count==0){
clearInterval(timer1);
repetition();
}
},200)
}
function repetition(){
var count=3;
var timer2=setInterval(function(){
// do something
count--;
if(count==0){
clearInterval(timer2);
secs=8;
clock();
}
},1000)
}
var index=0;
$("myId").click(function(){
var rand=this.id;
var check=(arrComputer[index]==rand); // arrComputer is an array
// generated by the computer
// by other function
if(check==true) {
// do something
clock();
}
}
函数和调用有效,但设置为1秒的时钟(setTimeout(时钟,1000))在第一次调用中会变为1秒,但是连续变得更快,所以变量secs变为8,7 ,6,5,...,0但速度更快:8到7之间不是1000毫秒,但可能是200毫秒。