网站首页 > 技术文章 正文
在前端,我们有很多功能需要用到定时器。譬如轮询,譬如定时关闭弹框,譬如实现秒表,譬如一段时间后跳转页面等等。因此,本文为针对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)
猜你喜欢
- 2024-10-05 聊聊浏览器的事件循环 浏览器循环点击插件
- 2024-10-05 vue 基础-生命周期 lifecycle 的执行顺序和作用
- 2024-10-05 前端如何搞监控总结篇 前端实时监控界面
- 2024-10-05 JavaScript setTimeout要理解 js中settime
- 2024-10-05 描述React的组件生命周期方法,并解释它们在何时被调用。
- 2024-10-05 面试必备-setTimeout vs setInterval哪个更准确,0ms延迟的真相
- 2024-10-05 autolog.js:一个小而美的toast插件。
- 2024-10-05 JavaScript 事件循环:理解进程、线程和异步编程
- 2024-10-05 高级前端进阶,你了解事件循环吗?
- 2024-10-05 「中高级前端」高性能渲染十万条数据(时间分片)
你 发表评论:
欢迎- 05-10如何优化数据库和前端之间的交互?
- 05-10前端代码优化小秘籍(前端优化24条建议)
- 05-10VS Code当中的15个神仙插件,值得收藏
- 05-10如何自己开发一个Google浏览器插件?
- 05-10前端流行框架Vue3教程:14. 组件传递Props效验
- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)