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实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
图片Slider 带左右按钮的js示例
Aug 30 Javascript
基于jQuery实现的文字按钮表单特效整理
Dec 07 Javascript
搞定immutable.js详细说明
May 02 Javascript
js实现对table的增加行和删除行的操作方法
Oct 13 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
JavaScript 过滤关键字
Mar 20 Javascript
vue.js单页面应用实例的简单实现
Apr 10 Javascript
vue iview多张图片大图预览、缩放翻转
Jul 13 Javascript
微信小程序批量上传图片到七牛(推荐)
Dec 19 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
May 15 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 flush()与ob_flush()的区别详解
2013/06/03 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
JavaScript之自定义类型
2012/05/04 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
layui导航栏实现代码
2017/05/19 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
分享15个最受欢迎的Python开源框架
2014/07/13 Python
使用Python编写Linux系统守护进程实例
2015/02/03 Python
讲解Python中的递归函数
2015/04/27 Python
python opencv读mp4视频的实例
2018/12/07 Python
python使用knn实现特征向量分类
2018/12/26 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
静态变量和实例变量的区别
2015/07/07 面试题
出纳的岗位职责
2013/11/09 职场文书
历史系自荐信范文
2013/12/24 职场文书
党员志愿者活动方案
2014/08/28 职场文书
生产实习心得体会范文
2016/01/22 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
Python 阶乘详解
2021/10/05 Python
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL
python使用BeautifulSoup 解析HTML
2022/04/24 Python