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 相关文章推荐
jquery文字上下滚动的实现方法
Mar 22 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
jquery插件开发注意事项小结
Jun 04 Javascript
JavaScript实现页面实时显示当前时间的简单实例
Jul 20 Javascript
setTimeout内不支持jquery的选择器的解决方案
Apr 28 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
JavaScript编程学习技巧汇总
Feb 21 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
Nov 20 Javascript
使用vue制作滑动标签
Sep 21 Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 Javascript
JS继承定义与使用方法简单示例
Feb 19 Javascript
如何在Vue.JS中使用图标组件
Aug 04 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+DBM的同学录程序(1)
2006/10/09 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
jquery实现控制表格行高亮实例
2013/06/05 Javascript
javascript自动改变文字大小和颜色的效果的小例子
2013/08/02 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
研究Python的ORM框架中的SQLAlchemy库的映射关系
2015/04/25 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
Django封装交互接口代码
2020/07/12 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
酒店总经理欢迎词
2014/01/15 职场文书
自我鉴定四大框架
2014/01/17 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
园林系毕业生求职信
2014/06/23 职场文书
2015年服务员工作总结
2015/04/08 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
Python几种酷炫的进度条的方式
2022/04/11 Python