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 相关文章推荐
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
Feb 24 Javascript
javascript获取下拉列表框当中的文本值示例代码
Jul 31 Javascript
将json对象转换为字符串的方法
Feb 20 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
Nov 16 Javascript
Summernote实现图片上传功能的简单方法
Jul 11 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
Aug 02 Javascript
js实现浏览器倒计时跳转页面效果
Aug 12 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
手把手教你写一个微信小程序(推荐)
Oct 17 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
ES5和ES6中类的区别总结
Dec 21 Javascript
JS如何使用剪贴板操作Clipboard API
May 17 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伪静态页面函数附使用方法
2008/06/20 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
基于游标的分页接口实现代码示例
2018/11/12 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
Python Logging 日志记录入门学习
2018/06/02 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
softmax及python实现过程解析
2019/09/30 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
美国购车网站:TrueCar
2016/10/19 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
最新茶叶店创业计划书
2014/01/14 职场文书
实习生自我评价
2014/01/18 职场文书
文艺晚会主持词
2014/03/24 职场文书
实习单位评语
2014/04/26 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书