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 事件流和事件绑定
Jul 16 Javascript
JavaScript this调用规则说明
Mar 08 Javascript
jquery防止重复执行动画避免页面混乱
Apr 22 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
Jun 23 Javascript
jQuery性能优化技巧分析
Feb 20 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
JS中位置与大小的获取方法
Nov 22 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
详解JQuery基础动画操作
Apr 12 jQuery
记录vue做微信自定义分享的一些问题
Sep 12 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
May 09 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
symfony表单与页面实现技巧
2015/01/26 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
详解Vue方法与事件
2017/03/09 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
python 实现return返回多个值
2019/11/19 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
Python操作Elasticsearch处理timeout超时
2020/07/17 Python
Python用Jira库来操作Jira
2020/12/28 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
英语专业学生个人求职信范文
2014/01/06 职场文书
运动会方阵解说词
2014/02/12 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
2015年新农合工作总结
2015/03/30 职场文书
实现GO语言对数组切片去重
2022/04/20 Golang
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技