【JavaScript】一文了解定时器的使用

简介: 一文了解定时器的使用

🏍️定时器

window对象给我们提供了两种定时器

🍇setTimeout() 超时定时器

setTimeout()方法用于设置一个定时器,该定时器在定时器到期后执行

window.setTimeout(调用函数,[延迟的毫秒数]);

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><script>// setTimeoutsetTimeout(function(){
// console.log('看我执行的时间');        },2000) //延迟单位是毫秒数functiontime(){
console.log('我执行了多久');
        }
vartimer=setTimeout(time,2000)
// setTimeout('time()',2000) 不提倡这种写法</script></body></html>

图片.png

总结

1.window可以省略

2.调用函数可以直接写函数或函数名或采用字符串 '函数名()'三种形式。第三章不推荐

3.延迟的毫秒数默认是0,如果写必须是毫秒

4.定时器如果有很多的话需要给定时器赋值一个标识符

setTimeout()这个调用函数也称为回调函数,普通函数是按照代码顺序直接调用,而这个函数需要等待时间,时间到了才会去调用这个函数,因此称为回调函数。简单理解:回调就是回头调用的意思,上一件事干完再回头调用这个函数。

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><imgsrc="./img1.jpg"><script>varimg=document.querySelector('img');
setTimeout(function(){
img.style.display='none';
        },5000)
</script></body></html>

图片.png

🍈clearTimeout() 清除超时定时器

clearTimeout()取消了先前调用setTimeout()建立的定时器

window.clearTime(timeout ID)

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><button>阻止按钮</button><script>vartime=setTimeout(function(){
console.log('快阻止我吧');
        },4000)
varbtn=document.querySelector('button');
btn.addEventListener('click',function(){
clearTimeout(time);
        })
</script></body></html>

图片.png

注意

1.window可以省略

2.里面的参数就是定时器的标识符

🍉setInterval() 间隔定时器

setInterval()方法反复调用一个函数,每隔这个时间就去调用一次回调函数。

window.setInterval(回调函数,[间隔的毫秒数])

<script>setInterval(function(){
console.log('我会间隔执行哦');
    },2000)
</script>

图片.png

倒计时案例

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title><style>span{
background-color: #000;display: block;
float: left;
margin-right: 10px;
margin-top: 300px;
width: 40px;
height: 40px;
color: #fff;text-align: center;
line-height: 40px;
        }
        .hour{
margin-left: 45%;
        }
</style></head><body><div><spanclass="hour">1</span><spanclass="mintue">2</span><spanclass="second">3</span></div><script>// 1.获取元素varhour=document.querySelector('.hour');
varmintue=document.querySelector('.mintue');
varsecond=document.querySelector('.second');
varinputTime=+newDate('2022-7-27 18:00:00'); // 返回的是用户输入时间的总的毫秒数// 第一次执行也是间隔毫秒数,因此刚刷新页面会有空白countDown();//我们先调用这个函数,防止第一次刷新页面有空白// 2.开启定时器setInterval(countDown,1000)
functioncountDown () {
varnowTime=+newDate(); // 返回的是当前时间总的毫秒数vartimes= (inputTime-nowTime) /1000; // time是剩余时间总的秒数varh=parseInt(times/60/60%24); //计算小时h=h<10?'0'+h : h;
hour.innerHTML=h;//把剩余的小时给 黑色的小时盒子varm=parseInt(times/60%60); //计算分数m=m<10?'0'+m : m;
mintue.innerHTML=m;
vars=parseInt(times%60); //计算当前秒数s=s<10?'0'+s : s;
second.innerHTML=s;
        }
</script></body></html>

图片.png


🍊clearInterval() 清除间隔定时器

clearInterval()方法取消了先前调用setInterval()建立的定时器。

window.clearInterval(interval ID)

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><buttonclass="begin">开启定时器</button><buttonclass="stop">关闭定时器</button><script>varbegin=document.querySelector('.begin');
varstop=document.querySelector('.stop');
vartimer=null;//全局变量begin.addEventListener('click',function(){
timer=setInterval(function(){
console.log('我在执行哦');
            },1000)
        })
stop.addEventListener('click',function(){
clearInterval(timer)
        })
</script></body></html>

图片.png

总结

setTimeout和setInterval的区别:

setTimeout:延时时间到了就去执行回调函数,只调用一次就结束这个定时器

setInterval:每隔这个延时时间就去调用回调函数,会重复调用这个回调函数

相关文章
|
6月前
|
JavaScript
JS定时器
JS定时器
56 0
|
5月前
|
JavaScript 前端开发 安全
JavaScript基础-定时器:setTimeout, setInterval
【6月更文挑战第13天】JavaScript中的`setTimeout`和`setInterval`是异步编程的关键工具,用于按计划执行代码。`setTimeout`在延迟后执行一次,而`setInterval`则周期性执行。常见问题包括忘记清除定时器导致内存泄漏,递归使用`setTimeout`可能引发无限递归,以及字符串代码执行的安全隐患。解决方法包括使用`clearTimeout`和`clearInterval`,设置递归终止条件,以及优先使用函数表达式。理解定时器的非精确性并采用错误处理策略也是实践中的重要技巧。通过示例展示了如何延迟显示消息和周期性打印计数。
96 2
|
1月前
|
JavaScript 前端开发
js之一次性定时器
js之一次性定时器
13 1
|
1月前
|
JavaScript 前端开发
js之永久定时器
js之永久定时器
17 1
|
3月前
|
JavaScript 前端开发
解决在JS中阻止定时器“重复”开启问题、Vue中定时器的使用
这篇文章讨论了在JavaScript和Vue中如何避免定时器重复开启的问题,并提供了一个模拟场景和代码示例,演示了在开启新定时器前清除旧定时器的方法。
解决在JS中阻止定时器“重复”开启问题、Vue中定时器的使用
|
3月前
|
JavaScript 前端开发
js之永久定时器
js之永久定时器
|
3月前
|
JavaScript 前端开发
|
3月前
|
Web App开发 JavaScript 前端开发
JavaScript——定时器为什么是不精确的
JavaScript——定时器为什么是不精确的
67 0
|
3月前
|
JavaScript 前端开发
js之永久定时器
js之永久定时器
32 0
|
3月前
|
JavaScript 前端开发
js之一次性定时器
js之一次性定时器
30 0