当前位置:首页 > 技术分析 > 正文内容

JS定时器详解及实例_js定时器的两种方法

ruisui883个月前 (02-20)技术分析10

#头条创作挑战赛#

在前端,我们有很多功能需要用到定时器。譬如轮询,譬如定时关闭弹框,譬如实现秒表,譬如一段时间后跳转页面等等。因此,本文为针对JavaScript定时器进行详解及对应的应用实例。

JavaScript定时器分类:

1. 循环执行:让一段程序能够每隔设定的一段时间内执行一次,常用于轮询。

语法:setInterval(要执行的方法,时间单位 (毫秒))

例如:setInterval(() =>{

console.log('这里是setInterval计时器')

},3000)

即:每隔3秒将在控制台里打印“这里是setInterval计时器”·

2. 倒计时定时执行(即一次性定时器,触发后只执行1次)setTimeout:让某段程序需要在延迟多少时间后执行。

语法:setTimeout(要执行的方法,时间单位 (毫秒))

例如:setTimeout(function (){

console.log(' setTimeout计时器')

},5000);

即:5秒后将在控制台里打印“setTimeout计时器”。

需要注意的是:

由于定时器所有任务都是由同一个线程来调度,定时器简单易用。同时这也导致了定时器所有任务都是串行执行的,同一时间只能有一个任务在执行,前一个任务的延迟或异常都将会影响到之后的任务,即定时器会重叠。而且定时器不会被自动销毁,即它所占内存无法被自动回收。如果不手动清除定时器,它会一直占用内存资源。更可怕的是,一旦使用定时器进行轮询,定时器所占的内存资源将会不断上升,若与定时器重叠问题一起出现,常导致页面卡顿。为了防止此问题的出现,在使用定时器后需要先清除定时器再进行设置,保证内存中只存在一个定时器。因此在清除定时器时,我们常在设置定时器时,定义一个变量来记录定时器返回的定时器序号,然后在定时器完成后,调用该序号清除对应定时器。

清除定时器:clearInterval()

例如:

var addnum = 0

//每隔10秒addnum会累加1次,定义变量accumulation装计时器的东西

function myinterval() {

accumulation= setInterval(() => {

addnum++

}, 10000);

}

//清除时在clearInterval()这个括号里写这个变量:accumulation就可以清除掉了。

function mystopinterval() {

clearInterval(accumulation)

}

实例:

JS定时器间隔20秒调用一次Ajax。

Sendajax =setInterval(function(){

$.ajax({

url: url,

method: 'POST',

dataType: 'json',

success: function(data) {

console.log("AJAX call");

}

});

}, 20000);

clearInterval(Sendajax)

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2121.html

标签: 清除定时器
分享给朋友:

“JS定时器详解及实例_js定时器的两种方法” 的相关文章

Windows 下 Git 拉 Gitlab 代码

读者提问:『阿常你好,Windows 下 Git 拉 Gitlab 代码的操作步骤可以分享一下吗?』阿常回答:好的,总共分为五个步骤。一、Windows 下安装 Git官网下载链接:https://git-scm.com/download/winStandalone Installer(安装版)注意...

Vue中路由router的基本使用

??本文开始我们来给大家介绍在Vue中非常重要的一个内容,就是路由Router什么是路由后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特...

「干货」Vue+Element前端导入导出Excel

作者:xrkffgg转发链接:https://segmentfault.com/a/11900000189936191 前言1.1 业务场景由前台导入Excel表格,获取批量数据。根据一个数组导出Excel表格。2 实现原理2.1 引入工具库file-saver、xlsx、script-loader...

Vue进阶(二十六):详解router.push()

在Vue2.0路由跳转中,除了使用 <router-link> 声明式创建 a 标签来定义导航链接,还可以借助 router 的实例方法,通过编码式编写代码来实现。router.push(location)想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 hi...

快来看看重构了 365 天的 vue3.5 这次到底更新了啥

新人求关注?,点击右上角 ↗? 关注,博主日更,全年无休,您的关注是我的最大的更新的动力~ 感谢大家了 就在 9 月 1 号,迭代了一年多的 Vue 3.5 终于发布了,这次发布的代号是 "天元突破 红莲螺岩"。这是一个机器人动画片的名字,相信喜欢看动漫的小伙伴应该很熟悉从更新的 C...

微信研发新功能,或许有你最期待的

微信在我们日常社交中担任着非常重要的角色,不管是用于学习还是工作,我们越来越离不开微信,微信的任何一个小的变化都会影响到现如今超过12亿的微信用户。就在前一段时间,微信更新了一个“拍一拍”的功能,只要双击好友头像,头像就会有抖动并带有文字提示,一时间众多网友在朋友圈疯狂刷屏,虽然觉得这个功能毫无用处...