首页 > 其他分享 >JS 设置定时器与清除定时器

JS 设置定时器与清除定时器

时间:2023-09-23 17:45:33浏览次数:29  
标签:定时器 setInterval 清除 timer JS setTimeout 1000

在前端,一些功能的实现需要用到定时器:轮询、定时开关弹窗、秒表、定时跳转等。。

一、设置定时器

window提供两个方法实现:setTimeout、setInterval

setInterval():使一段代码每过一段时间就执行一次,比如轮询

setInterval(() => {
   console.log('setInterval定时器') 
}, 1000)

setTimeout():使一段代码在指定时间后运行,运行一次

setInterval(() => {
   console.log('setTimeout定时器') 
}, 1000) 

二、缺陷

  1. 定时器任务由同一线程调度,是异步任务,在所有同步任务之后执行,需考虑串行任务时间问题。
  2. 定时器不会自动销毁(内存无法自己回收)必须手动清除,定时轮询会卡死。

三、清除定时器

定时器调用时会返回一个定时器序号(Number),表示第几个定时器,可以通过序号对其进行清除

let intervalTimer = setInterval(() => {
   console.log('intervalTimer') 
}, 1000)
// 清除setInterval
clearInterval(intervalTimer)

let timeoutTimer = setTimeout(() => {
   console.log('timeoutTimer') 
}, 1000)
// 清除setTimeout
clearInterval(timeoutTimer)

四、应用

如果在项目中使用的是vue/react等框架可以在销毁页面钩子函数中清除,例:vue2  beforeDestory()

<script> export default {   data() {     return {       timer: null     }   },   methods: {     fun(){       this.timer = setTimeout(() => {         // 执行代码       }, 1000)     }   },   beforeDestory() {     clearTimeout(this.timer)   } }; </script>

如果是在原生js中,可以判断html中的dom元素是否存在来进行清除。

<script>
    var timer
    function testTIme() {
        clearTimeout(timer)
        if(documnet.getElementById('time') === null) return
        timer = setTImeout(() => {
            //执行代码
        }, 1000)
    }
</script>        

五、注意

setInterval无视代码错误以及延迟,有错误照样循环执行,延迟即一直等待!

 

标签:定时器,setInterval,清除,timer,JS,setTimeout,1000
From: https://www.cnblogs.com/shiyiersan/p/17724779.html

相关文章

  • Java:JSR 310日期时间体系LocalDateTime、OffsetDateTime、ZonedDateTime
    JSR310日期时间体系:LocalDateTime:本地日期时间OffsetDateTime:带偏移量的日期时间ZonedDateTime:带时区的日期时间(目录)日期时间包importjava.time.LocalDateTime;importjava.time.OffsetDateTime;importjava.time.ZonedDateTime;importjava.time.format.DateTimeF......
  • 前端 数学计算 big.js 使用
     解决0.1+0.2不等于0.3的问题 解决方法方法一,同时扩大倍数再除以相同的倍数 0.1+0.2//0.30000000000000004(0.1*10+0.2*10)/10//0.3方法二,第三方库bignumber.jsmath.jsbig.js big.js基础用法运算//运算//constplus=Big(0.1).p......
  • JS深入学习笔记 - 第三章.变量作用域与内存
    1.原始值和引用值ECMScript变量包含两种不同类型是数据:原始值和引用值。原始值:最简单的数据。有6中原始值:Undefined、Null、Boolean、Number、String和Symbol。原始值是按值访问。引用值:由多个值构成的对象。三大引用类型:1.object2.Array类型3.Function类型。引用值是保存在......
  • 03-JSX-编码规范
    JSX书写规范JSX的顶层只能有一个根元素错误写法:render(){return(<p></p><div></div>)}正确写法:render(){return(<div><p>BNTang</p></div>)}J......
  • 02-JSX-灵活性
    JSX灵活性JSX使我们在JS中拥有了直接编写XML代码的能力所以在JS中能干的事,在JSX中都能干例如有如下这么一个需求:通过按钮控制界面上p标签的显示和隐藏:<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"......
  • 01-JSX嵌入内容
    JSX嵌入表达式只要是合法的表达式,都可以嵌入到JSX中任何合法的JS表达式都可以嵌入到{}中<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,u......
  • 解决:npm ERR! [email protected] install: `node install.js`
    https://cdn.npmmirror.com/binaries/chromedriver/2.27/chromedriver_win32.zip可以点击这个链接直接下载。删掉项目中的node_modules文件夹。根据自己的下载地址,安装依赖。npminstallchromedriver--chromedriver_filepath=文件地址注意:不需要解压缩。npminstall......
  • 第一课:PRC、智能定时器、IP FRR
    一,OSPF快速收敛有关技术点1,OSPF的快速收敛:为了提高路由的收敛速度而做的扩展特性,包括:PRC(部分路由计算)和智能定时器。2,OSPF故障恢复的快速收敛:例如通过OSPFIPFRR(快速重路由)实现备份链路的快速切换,也可以与BFD联动实现对故障的快速感知。二,PRC(部分路由计算)1,PRC的工作原理......
  • 一文彻底搞懂JS作用域
    JavaScript的作用域是一个非常基础且重要的概念,对于初学者来说,经常会觉得有些混乱搞不清楚。本文会详细介绍JavaScript作用域,包括全局作用域、函数作用域和块级作用域,以及ES6+新增的let、const和blockscope等特性,让你彻底搞懂作用域。1.JavaScript作用域简介在JavaScript中,作......
  • Vue.js 3.0 promise的运用
    ......