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中常用的55个经典技巧
Aug 12 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
May 08 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
Aug 12 Javascript
Javascript闭包用法实例分析
Jan 23 Javascript
全面解析Bootstrap弹窗的实现方法
Dec 01 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
Jun 30 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
Vue文件配置全局变量的实例
Sep 06 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
Jan 31 Javascript
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
使用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 str_pad 函数用法简介
2009/07/11 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
php基本函数汇总
2015/07/09 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
python中pycurl库的用法实例
2014/09/30 Python
python实现无证书加密解密实例
2014/10/27 Python
Python中的__slots__示例详解
2017/07/06 Python
Python 如何展开嵌套的序列
2020/08/01 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
母亲节演讲稿范文
2014/01/02 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
村庄绿化方案
2014/05/07 职场文书
运动会跳远广播稿5篇
2014/09/17 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
停电通知范文
2015/04/16 职场文书
2015年中秋节主持词
2015/07/30 职场文书
面试中canvas绘制图片模糊图片问题处理
2022/03/13 Javascript
MySQL存储过程及语法详解
2022/08/05 MySQL