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 相关文章推荐
实现JavaScript中继承的三种方式
Oct 16 Javascript
jquery用data方法获取某个元素上的事件
Jun 23 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
Feb 24 Javascript
JavaScript将字符串转换成字符编码列表的方法
Mar 19 Javascript
js+ajax实现获取文件大小的方法
Dec 08 Javascript
Bootstrap carousel轮转图的使用实例详解
May 17 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
jquery点击切换背景色的简单实例
Aug 25 Javascript
javascript cookie基础应用之记录用户名的方法
Sep 20 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
JavaScript基础之静态方法和实例方法分析
Dec 26 Javascript
javascript之分片上传,断点续传的实际项目实现详解
Sep 05 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 is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
node.js入门教程
2014/06/01 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
python进阶教程之循环对象
2014/08/30 Python
Python heapq使用详解及实例代码
2017/01/25 Python
tensorflow更改变量的值实例
2018/07/30 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
Django视图、传参和forms验证操作
2020/07/15 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
大学四年职业生涯规划书范文
2014/01/02 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
员工升职自荐信
2015/03/27 职场文书
后天观后感
2015/06/08 职场文书
银行柜员工作心得体会
2016/01/23 职场文书