www.91084.com
主页 > js >
js setTimeout和setInterval区别(js中settimeout和setinterval区别)
25-01-26
25
在本文中,我们将详细介绍jssetTimeout和setInterval区别的各个方面,并为您提供关于js中settimeout和setinterval区别的相关解答,同时,我们也将为您带来关于2.动
在本文中,我们将详细介绍js setTimeout和setInterval区别 的各个方面,并为您提供关于js中settimeout和setinterval区别 的相关解答,同时,我们也将为您带来关于2.动画与缓动(setTimeout和setInterval)、javascript setTimeout和setInterval 的区别、javascript setTimeout和setInterval 的区别_基础知识、JavaScript setTimeout和setInterval的用法与区别详解 的有用知识。
本文目录一览:
js setTimeout和setInterval区别(js中settimeout和setinterval区别) 1、区别
2、示例代码
<! DOCTYPE html >
< html lang ="zh" >
< head >
< meta charset ="UTF-8" />
< meta name ="viewport" content ="width=device-width, initial-scale=1.0" />
< meta http-equiv ="X-UA-Compatible" content ="ie=edge" />
< title > js setTimeout和setInterval区别</ title >
</ head >
< body >
< script type ="text/javascript" >
let scriptBegin = Date.now();
// fun1();
fun2();
// 需要执行20ms的程序
function act(functionName) {
console.log(functionName, Date.now() - scriptBegin);
let begin = Date.now();
while (Date.now() - begin < 20 );
}
// function fun1 () {
// let fun3 = ()=>{act(''fun3'')}
// setTimeout(fun3,20);
// act(''fun1'')
// }
function fun2() {
act( '' fun2-1 '' )
let fun4 = () => {
act( '' fun4 '' )
}
setInterval(fun4, 20 );
act( '' fun2-2 '' )
}
</ script >
</ body >
</ html >
注:可以分别执行fun1和fun2查看执行顺序。
2.动画与缓动(setTimeout和setInterval) setTimeout (一次)
setInterval (定时一次)
HTML:
<! DOCTYPE html >
< html >
< head >
< meta chartset ="utf-8" >
< title ></ title >
< link rel ="stylesheet" href = "./style.css" >
< script src ="./man.js" ></ script >
</ head >
< body >
< div id =div1 ></ div >
</ body >
</ html >
CSS:
#div1 {
width : 100px ;
height : 100px ;
background : pink ;
}
JS:
div1.style.position = ''relative''
div1.style.left = 0
let n = 0
let id =setInterver( ()=>{
n = n+1(每次移动1的距离)
div1.style.left = n + ''px''//(注意加上单位)
if (n>=200){
window.clearInterval(id)//移动了200px时,清除这个功能
}
}, 40)//设置40ms动一次
javascript setTimeout和setInterval 的区别 setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。
setInterval方法则是表示间隔一定时间反复执行某操作。
如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行。如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法:
例如:
tttt=setTimeout(''northsnow()'',1000);
clearTimeout(tttt);
或者:
tttt=setInterval(''northsnow()'',1000);
clearInteval(tttt);
举一个例子:
复制代码 代码如下:
<div id="liujincai"></div> <input type="button" name="start" value="start" onclick=''startShow();''> <input type="button" name="stop" value="stop" onclick="stop();"> <script language="javascript"> var intvalue=1; var timer2=null; function startShow() { liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString(); timer2=window.setTimeout("startShow()",2000); } function stop() { window.clearTimeout(timer2); } </script> 或者:
复制代码 代码如下:
<div id="liujincai"></div> <input type="button" name="start" value="start" onclick=''timer2=window.setInterval("startShow()",2000);//startShow();''> <input type="button" name="stop" value="stop" onclick="stop();"> <script language="javascript"> var intvalue=1; var timer2=null; function startShow() { liujincai.innerHTML=liujincai.innerHTML + " " + (intvalue ++).toString(); } function stop() { window.clearInterval(timer2); } </script>
您可能感兴趣的文章: setTimeout和setInterval的区别你真的了解吗? javascript setTimeout和setInterval计时的区别详解 setInterval()和setTimeout()的用法和区别示例介绍 setTimeout()与setInterval()方法区别介绍 setInterval和setTimeout停止的方法 Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数) JavaScript SetInterval与setTimeout使用方法详解 Js中setTimeout()和setInterval() 何时被调用执行的用法 JavaScript中SetInterval与setTimeout的用法详解 setTimeout与setInterval的区别浅析
javascript setTimeout和setInterval 的区别_基础知识 setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。 setInterval方法则是表示间隔一定时间反复执行某操作。 如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行。如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法: 例如: tttt=setTimeout(''northsnow()'',1000); clearTimeout(tttt); 或者: tttt=setInterval(''northsnow()'',1000); clearInteval(tttt); 举一个例子:
或者:
JavaScript setTimeout和setInterval的用法与区别详解 目录 I. 总述 II. setTimeout()函数 III. setInterval()函数 IV. 新年倒计时案例 总结
I. 总述
首先,setTimeout()和setInterval()函数是JavaScript中两个很重要的关于"时间的函数" ,因此,我们在学习JavaScript的过程中,一定要对这两个函数有一个深入的学习,它们两个函数也是经常被使用!
其中,如果分别用一句话来概括这两个函数 ,那么应该是这样的:
setTimeout(): 该函数能够按照设定的时间值延迟执行其中的事件。
setInterval(): 该函数能够按照设定的时间值作为间隔,周期性的执行其中的时间。
当然了,只是简述,细节方面,我们在下面的部分给大家做讲解。
II. setTimeout()函数
首先是我们的setTimeout()函数 ,它的格式是怎么样的呢:
setTimeout(function,times);
是的,就是这么简单的格式,其中,我们需要两个参数 ,分别是一个函数和一个int值 ,函数表示延迟一段时间后要执行的函数体,int值就是我们说的这段时间 ,例如我们看这段简单的代码:
setTimeout(function(){
alert("hello,setTimeout()");
}, 1000);
运行之后,它会在1s的延迟之后,弹出一个弹框,其中1000的单位是毫秒!
学到这里,大家觉得很简单,对吗?好的,那我给一段代码,大家猜一下它会输出什么 :
for (var i = 1; i <= 5; i++) {
setTimeout(function () {
alert(i)
}, 1000)
}
哎,有人要说了,简单啊,这不是输出:1 2 3 4 5 吗?
然而实际上是这样的:【点我揭晓】
也就是,它输出了5 5 5 5 5,所以这是为什么呢? 因为setTimeout()是一个异步执行函数 ,说人话就是,它里面的函数体,并不会在每一次执行的时候立刻运行,而是会丢进执行队列中,等待"主线任务"全部完成,才会执行它 。
于是在5次for循环后,i的值是5,传进去,弹出了5个5。
那么有没有解法呢?我给大家两种解法:
1️⃣ 使用关键字let:
for (let i = 1; i <= 5; i++) {
setTimeout(function () {
alert(i)
}, 1000)
}
那为啥使用let就可以了呢:
其实使用let之后,也没有改变执行机制 ,仍然是最后执行的alert() ,但是let可以在每一次把更新的变量i传进函数体内 ,也就是每一次的i加1之后,会把这个新值放进队列中对应的函数内 ,于是就解出了这个问题。
2️⃣ 定义一个外部变量:
我们在外部定义一个变量,这样这个变量每一次会被放入队列中 ,依旧不改变本身的执行机制:
var j = 1;
for (i = 1; i <= 5; i++) {
setTimeout(function () {
alert(j)
j++;
}, 1000);
}
第二种做法,更容易被别人看懂,也更适合做项目时实际使用。
III. setInterval()函数
第二个函数setInterval()就没那么复杂了,但是它的功能确实很强大的,我们先看看它的使用格式 :
setInterval(function,times);
依旧是两个参数,同setTimeout()格式一致,它可以以设置的times为间隔来循环重复function ,我们用一个小例子来测试一下:
setInterval(function(){
alert(''hello,setInterval()'');
}, 1000);
运行之后,每过1秒,就会弹出一个弹窗,显示这段话。
那运行之后,我们想当然会有一个问题,那就是可以在某个特定的时机让它不再循环执行了吗 ?答案是肯定滴,只不过我们需要定义一个setInterval()函数的对象 ,我们一般取名叫:timer :
var i = 5;
var timer = setInterval(function(){
i --;
if(i < 0){
clearInterval(timer);
}
alert(''i'');
}, 1000);
上面的代码中,我们给setInterval创建了一个对象叫timer ,在外部我们定义了另一个变量i ,之后我们每一次执行Interval内的函数时,就让 i-1 ,减到0以下,清除定时器 :
clearInterval(timer对象);
上面这句话是清除定时器的代码 ,传入一个setInterval()函数的对象 即可。
IV. 新年倒计时案例
最后,我们用学习的setTimeout()函数和setInterval()函数联动做一个新年倒计时案例 吧:
我们想要这样的效果:
首先,实现在屏幕上展示60秒倒计时;
在倒计时为0后,弹窗展示新年快乐!
有人看了这个说明,觉得那么我们的代码应该是这样的:
var element = document.getElementById("xin-nian")
var clock = 60;
var timer = null;
timer = setInterval(function () {
element.innerHTML = "新年倒计时:" + clock + " !";
console.log(clock)
clock--;
if (clock < 0) {
clearInterval(timer);
alert("新年快乐!");
}
}, 1000);
乍一看,好像没问题,但实际运行的时候,由于向html写入内容有一个小延迟,会导致最后倒计时0这个数字没被写进去就会弹窗 ,因此我们要在倒计时最后一秒,用setTimeout()做一个小缓冲 :
if (clock < 0) {
clearInterval(timer);
setTimeout(function () {
alert("新年快乐!")
}, 500)
}
于是完整的代码应该是这样的:
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>新年倒计时</title>
<style>
body {
background-image: url(./1.jpg);
}
</style>
</head>
<body>
<h1 id="xin-nian"></h1>
<script>
var element = document.getElementById("xin-nian")
var clock = 60;
var timer = null;
timer = setInterval(function () {
element.innerHTML = "新年倒计时:" + clock + " !";
console.log(clock)
clock--;
if (clock < 0) {
clearInterval(timer);
setTimeout(function () {
alert("新年快乐!")
}, 500)
}
}, 1000);
</script>
</body>
</html>
实现的效果是下面这样的动图 :
总结
到此这篇关于JavaScript setTimeout和setInterval的用法与区别的文章就介绍到这了,更多相关js setTimeout和setInterval的用法内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章: JavaScript中定时器setTimeout()和setInterval()的用法 VUE中setTimeout和setInterval自动销毁案例 vue 解决setTimeOut和setInterval函数无效报错的问题 JavaScript setInterval()与setTimeout()计时器 浅谈对于“不用setInterval,用setTimeout”的理解 页面中实现setInterval和setTimeout效果示例详解
关于js setTimeout和setInterval区别 和js中settimeout和setinterval区别 的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于2.动画与缓动(setTimeout和setInterval)、javascript setTimeout和setInterval 的区别、javascript setTimeout和setInterval 的区别_基础知识、JavaScript setTimeout和setInterval的用法与区别详解 等相关知识的信息别忘了在本站进行查找喔。