JavaScript setInterval()与setTimeout()计时器


Posted in Javascript onDecember 27, 2019

JavaScript是单线程语言,但是它可以通过设置超时值和间歇时间值来指定代码在特定的时刻执行。超时值是指在指定时间之后执行代码,间歇时间值是指每隔指定的时间就执行一次代码。

超时调用

超时调用使用window对象的setTimeout()方法,它接受两个参数:要执行的代码和以毫秒表示的时间(代码执行前的等待时间)。其中,第一个参数可以是一个字符串(和eval()中使用的字符串一样),也可以是一个函数。

JavaScript setInterval()与setTimeout()计时器

第二个参数是一个表示等待多长时间的毫秒数,但是在该时间过去后代码并不一定执行。JavaScript是一个单线程序的解释器,因此一定时间内只能执行一段代码。为了控制要执行的代码,就有一个JavaScript任务队列。这些任务会按照将它们添加到任务队列的顺序执行。setTimeout()的第二个参数告诉JavaScript再过多长时间把当前任务添加到队列中。如果队列是空的,那么添加的代码则会立即执行;如果队列不是空的,那么添加的代码会在前面的代码执行完毕后再执行。

调用setTimeout()之后,该方法会返回一个数值ID,表示超时调用。这个超时调用ID是计划执行代码的唯一标识符,可以通过它来取消超时调用。取消超时调用使用方法clearTimeout();

JavaScript setInterval()与setTimeout()计时器

间歇调用

间歇调用与超时调用类似,只不过它会按照指定的时间间隔重复执行代码,直至间歇调用被取消或页面被卸载。设置间歇调用的方法是setInterval(),它接收的参数与setTimeout()相同。取消间歇调用的重要性远高于超时调用。

JavaScript setInterval()与setTimeout()计时器

但是通常情况下,很少真正使用间歇调用,因为后一个间歇调用可能在前一个间歇调用结束之前调用。因此,我们通常会使用超时调用来模拟间歇调用

JavaScript setInterval()与setTimeout()计时器

下面看两个小demo:

1、获得当前日期并让它显示在文本框内,点击“stop”按钮后事件静止。(间歇调用) 

 HTML代码:

<input type="text" size="50" id="clock" />
<input type="button" value="Stop" id="btn" />

JavaScript代码:

function clock(){
  var time = new Date();
  document.getElementById("clock").value = time;  
  var btn =document.getElementById("btn");
  btn.onclick = function(){
    clearInterval(t); 
  }
}
var t = setInterval(clock,1000);

2、使用setTimeou()实现计数统计效果,并在文本框中显示数值。

HTML代码:

<input type="text" id="count" />

JavaScript代码:

var num = 0;
function startCount(){
  document.getElementById("count").value = num;
  num += 1;
  setTimeout(startCount,1000);  //setTimeout是超时调用,使用递归模拟间歇调用
}  
setTimeout(startCount,1000);  //1s后执行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一个简单的JavaScript数据缓存系统实现代码
Oct 24 Javascript
JS获取url链接字符串 location.href
Dec 23 Javascript
jQuery窗口、文档、网页各种高度的精确理解
Jul 02 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
Dec 18 Javascript
jQuery实现的图片分组切换焦点图插件
Jan 06 Javascript
扒一扒JavaScript 预解释
Jan 28 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
Aug 05 Javascript
Vue Router的手写实现方法实现
Mar 02 Javascript
js实现消灭星星(web简易版)
Mar 24 Javascript
js实现轮播图特效
May 28 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 #Javascript
React中使用UMEditor的方法示例
Dec 27 #Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 #Javascript
JavaScript中变量提升机制示例详解
Dec 27 #Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
Dec 26 #Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 #Javascript
node.js Promise对象的使用方法实例分析
Dec 26 #Javascript
You might like
PHP校验ISBN码的函数代码
2011/01/17 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
php单例模式的简单实现方法
2016/06/10 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python函数装饰器实现方法详解
2018/12/22 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
公务员培训自我鉴定
2014/02/01 职场文书
小组合作学习反思
2014/02/18 职场文书
大学生活自我评价
2014/04/09 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
工作证明格式及范本
2014/09/12 职场文书
财务部会计岗位职责
2015/02/03 职场文书
汽车车尾标语大全
2015/08/11 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android