JavaScript 定时器详情


Posted in Javascript onNovember 11, 2021

1、简单介绍

JavaScript中定时器有两个 setInterval() setTimeout() 分别还有取消定时器的方法。
这都是window的对象,调用时可以省略window。这两个方法并不在 JavaScript 的规范中。

定时器方法相关方法有四种:

 

方法 描述
setInterval 周期性地调用一个函数(function)或者执行一段代码。
clearInterval 取消掉用setInterval设置的重复执行动作。
setTimeout 在指定的延迟时间之后调用一个函数或者执行一个代码片段。
clearTimeout 方法可取消由 setTimeout() 方法设置的 timeout。

注意:setTimeout() 只执行一次setInterval()是每间隔给定的时间周期性执行。

2、setInterval

2.1 描述

setInterval() 方法可以按照制定的周期,来重复调用一个函数或执行一个代码段。周期单位为毫秒。
setInterval() 方法如果没有被 clearInterval() 方法关闭或页面关闭,那么会一直调用下去。
setInterval的参数有多个。
第一种,如果第一个参数为代码段,那么setInterval()方法可以选填。
第二种,如果第一个参数为函数,那么setInterval()方法可以有多个参数。

let timerId = setInterval(func|code, delay, arg1, arg2, ...)

2.2 参数

参数 必/选填 描述
func | code 必填 调用的函数后要执行的函数或代码字符串
delay 必填 执行代码前所需的时间,单位为毫秒,可以不填,默认值是 0
arg1,arg2… 选填 要传入被执行函数(或代码字符串)的参数列表(IE9 以下不支持)

注意:参数func|code 一般传入的都是函数。由于某些历史原因,支持传入代码字符串,但是不建议这样做。

2.3 返回值

返回值timeoutID是一个正整数,表示定时器的编号。这个值可以传递给clearTimeout()来取消该定时器。

2.4 用法

这是一个点击按钮,每隔一秒种,数字加一的示例;

<p id="showNum"></p>
<button onclick="timer()">点我每秒钟数字加一</button>

<script>
  const showNum = document.getElementById("showNum");

  let timerId; // 计时器的ID
  let num = 0;

  function timer() {
    timerId = setInterval(addNum, 1000);
  }

  function addNum() {
    showNum.innerText = `${num++}`;
  }

  // 没有写停止计时器代码
</script>

3、setTimeout

3.1 描述

setTimeout()返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。
setTimeout()允许我们将函数推迟到一段时间间隔之后再执行。

let timerId = setTimeout(func|code, delay, arg1, arg2, ...)

3.2 参数

setTimeout()参数这里和setInterval()的参数是一样的。

参数 必/选填 描述
func | code 必填 调用的函数后要执行的函数或代码字符串
delay 必填 执行代码前所需的时间,单位为毫秒,可以不填,默认值是 0
arg1,arg2… 选填 要传入被执行函数(或代码字符串)的参数列表(IE9 以下不支持)

注意:参数func|code 一般传入的都是函数。由于某些历史原因,支持传入代码字符串,但是不建议这样做。

3.3 用法

setTimeout()用法和 setInterval()是一样的,

不过 setTimeout() 只执行一次不同,setInterval() 是根据指定的时间周期性执行。

<p id="showNum"></p>
<button onclick="timer()">点击后,等待一秒钟数字加一</button>

<script>
  const showNum = document.getElementById("showNum");

  let timerId;
  let num = 0;
  addNum();

  function timer() {
    timerId = setTimeout(addNum, 1000);
  }

  function addNum() {
    showNum.innerText = `${num++}`;
  }

</script>

4、取消timer

clearInterval() 方法可取消由 setInterval() 设置的 timer
clearTimeout() 方法可取消由 setTimeout() 设置的 timer

使用方法很简单,只有一个参数,该参数timeoutID为您要取消定时器的标识符。
该ID由相应的setTimeout()clearTimeout()调用返回.

clearInterval(intervalID);
clearTimeout(timeoutID);

注意:注意的是setTimeout()和setInterval()共用一个编号池,技术上,clearTimeout()和 clearInterval() 可以互换。但是,为了避免混淆,不要混用取消定时函数。

用法很简单:

function timer() {
  timerId = setTimeout(addNum, 1000);
}

clearTimeout(timerId); // 当代码运行到这行的时候,会取消timer所设置的定时器。

5、在控制台使用定时器

在浏览器控制台中也可以使用定时器

console.time(timerName)

创建一个名为name的计时器,并开始计时。

注意: 每一个计时器必须拥有唯一的名字,页面中最多能同时运行10,000个计时器。

console.timeEnd(timerName)

调用console.timeEnd(name)停止计时器并输出所耗时间(毫秒)。

console.time(timerName);
console.timeEnd(timerName);

5.1 用法

for循环99999次要多少时间示例:

console.time(name);

let num;
for (let index = 0; index < 99999; index++) {
  num++;
}

console.timeEnd(name);

到此这篇关于JavaScript 定时器 详情的文章就介绍到这了,更多相关JavaScript 定时器 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
[Web]防止用户复制页面内容和另存页面的方法
Feb 06 Javascript
jquery插件validate验证的小例子
May 08 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
用jquery方法操作radio使其默认选项是否
Sep 10 Javascript
AngularJS HTML DOM详解及示例代码
Aug 17 Javascript
JavaScript SHA-256加密算法详细代码
Oct 06 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
React教程之封装一个Portal可复用组件的方法
Jan 02 Javascript
AngularJS模态框模板ngDialog的使用详解
May 11 Javascript
每天学点Vue源码之vm.$mount挂载函数
Mar 11 Javascript
Vue form表单动态添加组件实战案例
Sep 02 Javascript
使用javascript解析二维码的三种方式
Nov 11 #Javascript
实现一个简单得数据响应系统
Nov 11 #Javascript
JavaScript函数柯里化
Nov 07 #Javascript
JS数组去重详情
Nov 07 #Javascript
手写实现JS中的new
Nov 07 #Javascript
用JS写一个发布订阅模式
Nov 07 #Javascript
浅谈JavaScript浅拷贝和深拷贝
You might like
php生成SessionID和图片校验码的思路和实现代码
2009/03/10 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP生成树的方法
2015/07/28 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
JS输出空格的简单实现方法
2016/09/08 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
python 获取et和excel的版本号
2009/04/09 Python
使用Python生成url短链接的方法
2015/05/04 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python能做哪方面的工作
2020/06/15 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
旷课检讨书1000字
2014/02/14 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
实习生矿工检讨书
2014/10/13 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2015年入党决心书
2015/02/05 职场文书
出纳试用期自我评价
2015/03/10 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书