setTimeout和setInterval之间的异同

这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript。不过两者各有各的应用场景。
实际上,setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。
不过这两个函数还是有区别的,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。
虽然表面上看来setTimeout只能应用在on-off方式的动作上,不过可以通过创建一个函数循环重复调用setTimeout,以实现重复的操作:

showTime();
function showTime()
{
var today = new Date();
alert("The time is: " + today.toString());
setTimeout("showTime()", 5000);
}

一旦调用了这个函数,那么就会每隔5秒钟就显示一次时间。如果使用setInterval,则相应的代码如下所示:

setInterval("showTime()", 5000);
function showTime()
{
var today = new Date();
alert("The time is: " + today.toString());
}

这两种方法可能看起来非常像,而且显示的结果也会很相似,不过两者的最大区别就是,setTimeout方法不会每隔5秒钟就执行一次showTime函数,它是在每次调用setTimeout后过5秒钟再去执行showTime函数。这意味着如果showTime函数的主体部分需要2秒钟执行完,那么整个函数则要每7秒钟才执行一次。而 setInterval却没有被自己所调用的函数所束缚,它只是简单地每隔一定时间就重复执行一次那个函数。

如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout。


函数指针的使用

两个计时函数中的第一个参数是一段代码的字符串,其实该参数也可以是一个函数指针,不过Mac下的IE 5对此不支持。

如果用函数指针作为setTimeout和setInterval函数的第二个参数,那么它们就可以去执行一个在别处定义的函数了:

setTimeout(showTime, 500);
function showTime()
{
var today = new Date();
alert("The time is: " + today.toString());
}


另外,匿名函数还可以声明为内联函数:

setTimeout(function(){var today = new Date();
alert("The time is: " + today.toString());}, 500);


如果对计时函数不加以处理,那么setInterval将会持续执行相同的代码,一直到浏览器窗口关闭,或者用户转到了另外一个页面为止。不过还是有办法可以终止setTimeout和setInterval函数的执行。

当setInterval调用执行完毕时,它将返回一个timer ID,将来便可以利用该值对计时器进行访问,如果将该ID传递给clearInterval,便可以终止那段被调用的过程代码的执行了,具体实现如下:

var intervalProcess = setInterval("alert('GOAL!')", 3000);
var stopGoalLink = document.getElementById("stopGoalLink");
attachEventListener(stopGoalLink, "click", stopGoal, false);
function stopGoal()
{
clearInterval(intervalProcess);
}


只要点击了stopGoalLink,不管是什么时候点击,intervalProcess都会被取消掉,以后都不会再继续反复执行intervalProcess。如果在超时时间段内就取消 setTimeout,那么这种终止效果也可以在setTimeout身上实现,具体实现如下:

var timeoutProcess = setTimeout("alert('GOAL!')", 3000);
var stopGoalLink = document.getElementById("stopGoalLink");
attachEventListener(stopGoalLink, "click", stopGoal, false);
function stopGoal()
{
clearTimeout(timeoutProcess);
}
10秒后页面自动跳转 立即下载

相关推荐

js实现5秒后页面跳转

js实现5秒后页面跳转

5秒之后自动跳转页面

【代码】5秒之后自动跳转页面。

ywt201010的博客 2万+

手机拍照背后的隐形功臣:一文读懂高通ISP三兄弟(IFE/BPS/IPE)如何协同工作

本文深入解析了高通ISP三兄弟(IFE/BPS/IPE)在手机拍照中的协同工作机制。通过拟人化比喻,详细介绍了IFE作为图像前端引擎的分流预处理、BPS作为RAW格式修图师的专业处理,以及IPE作为全能后期制作人的多面功能,揭示了三者在图像处理pipeline中的高效配合与技术创新。

weixin_27032989的博客 528

jdbc的内容以及如何在5秒钟后自动跳转到login.html页面

首先,在5秒钟之后跳转到login.html: 最初的解决方法: try { Thread.sleep(5000); response.sendRedirect("login.html"); }catch (Exception e) { e.printStackTrace();; } 预设的是通过 Thread 这个线程类的sleep方法 来进行延时处理 以达到5秒之后的页面跳转

yooppa的博客 7433

永磁同步电机FOC控制实战:如何用线性死区补偿解决低速抖动问题(附Matlab仿真代码)

本文详细介绍了永磁同步电机FOC控制中线性死区补偿技术的工程实现方法,有效解决低速抖动问题。通过Matlab/Simulink仿真验证,该方案可将转矩脉动降低70%以上,显著提升系统稳定性。文章包含完整的数学模型构建、Simulink实现步骤及参数整定技巧,为工程师提供实用解决方案。

weixin_30872499的博客 154

图像质量评估(5) -- 畸变(Distortion)

当图像中原本应该是直线的地方看起来发生了不自然的变形或扭曲时,我们称为图像畸变。有三种类型的镜头畸变:桶形畸变(后文使用英文barrel),枕形畸变(后文使用pincushion)和胡子畸变(后文使用英文wavef或mustache,这种畸变里包含了桶形畸变和枕形畸变)。有一个重要的点需要注意,根据透镜的类型以及透镜是否能够从相机中移除等条件不同,畸变会有不同的表现。 总的来说,旋转对称光学系统功能上会产生和物体几何相似的图形。但也有少数特殊的系统是例外,例如鱼眼镜头,这种镜头几何是故意设计为

vivo01的专栏 2万+

前端面试问题(3)

先在自己的构造函数中寻找,如果没有就到自己的原型中寻找,如果还没有就到原型的原型中寻找,一直到找到object的原型,如果没有就报错。减少重绘和回流次数,多使用类来修改样式,减少内联样式修改。把事件添加给标签的父元素,通过事件对象e.target来实现具体的操作。数据存储在本地,(没有过期时间)需要手动删除,存储量大。)返回从start位置开始到end位置的子串(不包含end)减少网络请求次数(节流)html角度:多使用语义化标签,减少标签层级化嵌套。可以为数据设置过期时间,存储量小,可以与后台共用。

weixin_53163211的博客 537

AF3​​​​​​​ Msa、TemplateHit、HitMetadata类解读

Msa:处理 多序列比对 (MSA) 结果,为 AlphaFold3 提供 序列进化信息。 TemplateHit:存储 查询序列与模板结构的比对信息,用于 筛选模板。 HitMetadata:提供 比对模板的 PDB 结构信息,帮助 解析和使用模板数据。

qq_27390023的博客 818

setTimeout() 与 setInterval() 异同

setTimeout() 这里浏览器将在执行匿名函数之前等待两秒钟,然后将显示警报消息 let myGreeting = setTimeout(function() { alert('Hello, Mr. Universe!'); }, 2000) 缺陷 您可以使用递归的setTimeout()调用以类似于setInterval()的方式重复运行函数,使用如下代码: let i = 1; s...

weixin_44023658的博客 713

从AND到XOR:5种门控电路在PrimeTime中的检查策略差异

本文深入探讨了AND、NAND、OR、NOR和XOR五种门控电路在PrimeTime静态时序分析中的检查策略差异。重点解析了XOR门控因其非单调性而无法被工具自动推断,需要工程师手动配置的特殊性,并提供了针对各类门控的配置模板与调试技巧,以确保时钟网络的完整性与芯片设计的可靠性。

rgv2345678的博客 269

【DRAM存储器六十二】DDR5介绍--引脚和基本功能简介

详述DDR5与DDR4的引脚区别和DDR5基本功能

highman110的博客 524

大厂真题!前端面试手写代码——使用 setTimeout 实现 setInterval

我们在一开始设置了一个变量用来储存计时器的id,然后在函数的结尾返回了一个控制定时器的变量函数。当我们要停止计时器时,我们只需要调用它就可以了。首先拿到这道题,我应该先思考一下,setTimeout和setIntval这两个计时器之间有什么相同点和差别,再选择合适的算法实现它。我们这里可以使用递归setTimeout函数反复执行不就实现了setInterval了。是 JavaScript 中的另一个计时器方法,用于按指定的时间间隔。要实现可以停止计时器,我们只需要拿到计时器的ID就可以了。

gaotlantis的博客 690

【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航

本文是为准备408王道计算机组成原理考试的学生精心整理的万字笔记,涵盖了从计算机系统概述、数据表示和运算到存储系统、指令系统等多个章节的重点内容。本文强调了学习笔记的重要性,并分享了学习建议,如按视频课逻辑记录,建立学科框架。笔记详细记录了每章的关键知识点,包括存储器、CPU、I/O系统的工作原理,还附带了习题和思维导图,旨在帮助考生高效复习。

快乐江湖的博客 9万+

试描述setInterval和setTimeout区别

1.什么是setInterval和setTimeout 在一定时间触发相应的代码,叫做定时器 setTimeout();在指定的时间后,调用相应的方法 window.setsetTimeout(方法,毫秒数) setInterval();在指定的周期内,不停的调用方法,直到遇到clearInterval window.setInterval(方法,毫秒数) 注意:在调用定时器的时候,window可...

yuan_yuan_mu的博客 1717

【WorkBuddy专栏53】我的WB为什么变聪明了——SOUL与USER配置管理实战(上)

【WorkBuddy专栏53】我的WB为什么变聪明了——SOUL与USER配置管理实战(上)

AI人人懂 245

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

flex中setTimeOut与setInterval与Timer的异同

flex中setTimeOut与setInterval与Timer的异同 三种计时器的参数说明: flash.utils.Timer(延迟时间,执行次数);    //执行次数为0时表示无数次被执行 setInterval(函数a, 延迟时间, 其首参函数的参数0, 其首参函数a的参数1, ...); setTimeOut(函数a, 延迟时间, 其首参函数的参数0, 其首参函...

前端开发、简约至上! - Html,Css,Js,Jquery ... 220

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

setTimeout与setInterval的区别

setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。setTimeout方法接收两个参数,第一个参数为回调函数函数或字符串,第二个参数为触发时间(单位毫秒)setInterval()方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。setInterval()方法会不停地调用函数,直到clearInterval()被调用或窗口被关闭。由setInterval()返回的ID值可用作clearInterval()方法的参数。...

qq_46416934的博客 380

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

从js运行机制看setTimeout与setInterval

setTimeout:超时调用; setInterval:间歇调用 调用时,代码是在全局环境中执行的,里面的this在正常模式下指向window,严格模式下指向undefined。 参数: 第一个参数为字符串或者函数(建议使用函数,传递字符串可能导致性能损失) 第二个参数为以毫秒表示的时间,该时间表示多少毫秒后将当前任务加入任务队列。 注意:对于定时器,是准时添加的,但不是准时执行的。...

lwf的博客 634

javaScript setTimeout()和setInterval()定时器的区别和使用。

的setTimeout 用倒计时的例子来解释两个的不同的使用 window.onload=function(){ function getTime1(){ var box=document.getElementById('box'); //获取当前日期和时间 var xian...

qq_38743783的博客 1788

js的两种定时器(setTimeout和setInterval的区别)

setTimeout只在指定时间后执行一次 setTimeout(function(){ alert('执行'); },2000); setInterval以指定时间为周期循环执行 setInterval(function(){ alert('执行'); },2000); 一般情况下setTimeout用于延迟执行某方法或功能, setInterval则一般用于刷新表单,对于一些表单的假实时指定时间刷新同步 清除Timeout的定时器, 传入id(创建定时器时会返回一个id) clearTime

qac的博客 429

requestAnimationFrame、setTimeout、setInterval总结与区别

setTimeout: setTimeout() 是属于 window 的方法,该方法用于在指定的毫秒数后调用函数或计算表达式。 setTimeout(()=> {执行代码段}, time延迟时间),在执行前可以手动取消,setTimeout函数之前后会返回ID值,利用clearTimeout可以取消定时器 setInterval: ...

qq_41400354的博客 831

JavaScript定时器 setTimeout 和 setInterval 异同

setTimeout setInterval 描述 实现的是根据给定的时间间隔,每隔一段时间调用一次函数或执行一次代码 实现的是根据给定的时间,在经过该时间之后只调用一次函数或执行一次代码 语法 s...

weixin_33854644的博客 137

js setInterval函数和setTimeOut函数的区别

setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。 不过这两个函数还是有区别的,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。 区别: window.setTimeout("fun

u013182438的博客 674

php java time out,PHP中setInterval与setTimeout区别

setInterval与setTimeout讲个函数举例讲解了一下.然后,也就只写了一个,验证了一下. 下面是代码:先来看看setInterval函数:1 2 var time = setInterval("func()",1000);3 var count = 10;4 function func(){5 if(count != 0){6 document.getElementById("div...

weixin_34781110的博客 169

JavaScript SetInterval与setTimeout的区别

SetInterval与setTimeout两个的异同: 相同点为他们都有两个参数,一位执行函数function();一为时间间隔:1000为一秒 但他们之间也有不同,setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。 若要停止及时则为:clearTimeout(对象) 清除已设置的setTimeout对象

qq_26577955的博客 327

setTimeout()与setInterval()

同:setTimeout和setInterval函数,都返回一个表示计数器编号的整数值,将该整数传入clearTimeout和clearInterval函数,就可以取消对应的定时器。setTimeout()是属于window的方法,该方法用于在指定的每秒数后调用函数或计算表达式。setInterval是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算。被调用或窗口被关闭可以使用setInterval()方法。setInterval方法会不停地调用函数,直到。被调用或窗口被关闭。

m0_50953782的博客 223
上一篇: Web主流文件的Content-Type
下一篇: html特殊符号对照表
pythoner
博客等级 码龄18年 15粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值