setTimeout函数的写法--计时器

console.log(1);

/**
 * 第一个参数是代码,注意代码需用引号包裹,否则会立即执行代码
 * 第二个参数是 1000,即 1000ms 后执行 console.log(2)
 */
setTimeout('console.log(2)', 1000);

/**
 * 第一个参数是匿名函数
 * 第二个参数是 2000,即 2s 后执行 console.log(3)
 */
setTimeout(function () {
    
    
  console.log(3);
}, 2000);

// 第一个参数是函数名,注意函数名后不要加小括号“()”,否则会立即执行 print4
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方法,实现倒计时的效果

猜你喜欢

转载自blog.csdn.net/qq_43733682/article/details/124234679