console.log(1);
setTimeout('console.log(2)', 1000);
setTimeout(function () {
console.log(3);
}, 2000);
setTimeout(print4, 3000);
console.log(5);
function print4() {
console.log(4);
}
运行结果是; 1 5 2 3 4 解析: 首先是立刻打印1,要等待1000毫秒后打印2,所以开始挂着,然后2000毫秒后执行,打印3,3000毫秒后执行print,所以3000毫秒后,才能执行print4,然后打印4,遇到5,立刻打印,所以按时间,先是1,后5,再是2,后3,最后4 根据找这个写法,我们可以用递归的方式写计时器
注意,函数可以调用本身,这就是递归 每隔一秒会执行一次,每次执行的代码可以 1.打印剩余的秒数 2.将秒数减1 3.如果剩余的秒数>0,则调用setTimeout在上一秒后重复上述的1、2、3,否则不再调用,并清除计时器,计时结束
现在我们先写代码
let i =60;
let timerId;
function count(){
console.log(i);
i--;
if(i>0){
timerId=setTimeout(count,1000);
}else{
clearTimeout(timerId);
}
}
count();
1.开始的时候,先是开始60 的计时 2.定义变量存储定时器的编号 3.写一个函数,这个函数要执行的代码可以完成以上的各个条件 4.先是打印,然后使得计时器可以每次减一 5.可以延迟 6.满足条件后清除,不让计时器可以一直循环下去 我们在count方法里面调用了count方法,实现倒计时的效果
|