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 相关文章推荐
拖动一个HTML元素
Dec 22 Javascript
JavaScript使用技巧精萃[代码非常实用]
Nov 21 Javascript
Jquery实战_读书笔记2 选择器
Jan 22 Javascript
JSON JQUERY模板实现说明
Jul 03 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
May 12 Javascript
jQuery使用cookie与json简单实现购物车功能
Apr 15 Javascript
深入解析JavaScript中的立即执行函数
May 21 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
vue.js获取数据库数据实例代码
May 26 Javascript
浅析从vue源码看观察者模式
Jan 29 Javascript
Vuex 模块化使用详解
Jul 31 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
Dec 30 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编写RESTful接口的方法
2016/02/21 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
python实现五子棋小游戏
2020/03/25 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
校园达人秀策划书
2014/01/12 职场文书
大型会议策划方案
2014/05/17 职场文书
参赛口号
2014/06/16 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
拉贝日记观后感
2015/06/05 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
python区块链实现简版工作量证明
2022/05/25 Python