“前端开发中的三种定时任务及其应用“
前端定时任务是指在一定时间间隔内,自动执行指定的操作或函数。在前端开发中,定时任务被广泛应用于诸如数据更新、定时提醒、定时刷新页面等方面。在本文中,我们将介绍前端中常见的三种定时任务,分别是 setTimeout、setInterval 和 requestAnimationFrame。
setTimeout
setTimeout 是前端最常见的定时任务方式之一。它是一个全局函数,用于在指定时间间隔之后执行指定的函数。setTimeout 函数的语法如下:
javascript
setTimeout(function, delay, arg1, arg2, ...)
其中,function 参数是要执行的函数,delay 参数是延迟的时间,单位为毫秒。arg1、arg2 等参数是要传递给函数的参数,可以省略。
例如,下面的代码会在延迟 1 秒后弹出 "Hello World!":
javascript
setTimeout(function() {alert("Hello World!");
}, 1000);
setTimeout 函数只会执行一次,如果需要多次执行,需要在函数内部再次调用 setTimeout 函数。
setTimeout 的缺点是,由于 JavaScript 是单线程执行的,如果某个函数执行时间较长,会导致整个页面卡顿。因此,setTimeout 不适合执行较为复杂的任务。
setInterval
setInterval 是另一种常见的前端定时任务方式,用于每隔一定时间执行指定的函数。setInterval 函数的语法如下:
javascript
setInterval(function, delay, arg1, arg2, ...)
其中,function 参数是要执行的函数,delay 参数是每次执行之间的时间间隔,单位为毫秒。arg1、arg2 等参数是要传递给函数的参数,可以省略。
例如,下面的代码会每隔 1 秒弹出 "Hello World!":
javascript
setInterval(function() {alert("Hello World!");
}, 1000);
setInterval 函数会不断重复执行,直到 clearInterval 函数被调用或页面关闭。与 setTimeout 不同的是,setInterval 函数的执行不会受到前一个函数的执行时间影响,因此适合执行较为复杂的任务。
requestAnimationFrame
requestAnimationFrame 是前端定时任务的一种新方式,用于执行一些需要高性能渲染的任务。与 setTimeout 和 setInterval 不同,requestAnimationFrame 会在下一次浏览器重绘之前执行指定的函数。这样可以避免由于频繁的重绘导致的性能问题。
requestAnimationFrame 函数的语法如下:
javascript
window.requestAnimationFrame(callback);
其中,callback 参数是要执行的函数。
例如,下面的代码会在下一次浏览器重绘之前执行指定的函数:
javascript
function animate() {// 执行动画效果window.requestAnimationFrame(animate);
}
animate();
requestAnimationFrame 函数在性能上比 setTimeout 和 setInterval 更优,因为它会根据浏览器的帧率进行调节,避免了不必要的浪费。
综上所述,前端常见的三种定时任务分别是 setTimeout、setInterval 和 requestAnimationFrame。其中,setTimeout 和 setInterval 适用于一些简单的定时任务,而 requestAnimationFrame 则适用于一些需要高性能渲染的任务。在实际开发中,应根据具体的需求选择不同的定时任务方式,并注意避免一些常见的问题,比如定时任务过多导致的性能问题。
同时,需要注意的是,由于 JavaScript 是单线程执行的,如果某个定时任务执行时间过长,会导致整个页面卡顿。因此,在编写定时任务的时候,应该尽量避免阻塞主线程,可以通过将任务放在 Web Worker 中执行、使用异步操作等方式来提高执行效率。
在实际应用中,我们还可以通过使用第三方的定时任务库来简化开发,比如 node-cron、agenda 等。这些库提供了更加灵活和高级的定时任务管理方式,可以帮助开发者更加方便地管理定时任务,并提高代码的可维护性和可读性。
总之,定时任务是前端开发中非常常见的一种场景,开发者应该掌握各种定时任务的使用方式,并注意避免一些常见的问题,从而提高代码的质量和效率。
关注我,持续分享优质好文!!!
相关文章:
“前端开发中的三种定时任务及其应用“
前端定时任务是指在一定时间间隔内,自动执行指定的操作或函数。在前端开发中,定时任务被广泛应用于诸如数据更新、定时提醒、定时刷新页面等方面。在本文中,我们将介绍前端中常见的三种定时任务,分别是 setTimeout、setInterval 和…...
华为OD机试题 - 猜字谜(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:猜字谜题目输入输出描述备注示例一输入输出示例二输入输出思路C…...
python@pyside样式化
文章目录refWidget类创建样式化文件qss引用样式并启动应用ref Styling the Widgets Application - Qt for PythonQt Style Sheets Reference | Qt Widgets 5.15.12 Widget类创建 创建一个简单界面(菜单主要内容)它们是水平布局 主要内容包括一段文本和一个按钮,它们是垂直布…...
C++经典15道面试题目(文末含大题)
今天给大家找了几个C面试里很有可能被问的哦,赶紧收藏下来去背!!! 目录 1)C中有malloc/free,为什么还需要new/delete? 2)C中explicit关键字的作用? 3)C中static关键字的作用&a…...
自动计算30天内的股价最高价源代码
我可以回答这个问题。您可以使用以下代码来计算30天内股价的最高价: 复制 import pandas as pd import yfinance as yf # 设置股票代码和日期范围 symbol "AAPL" start_date "2021-01-01" end_date "2021-06-30" # 获取股票…...
国外SEO升级攻略!一看就懂!
SEO是搜索引擎优化的缩写,它是指通过优化网站内容和结构,提升网站在搜索引擎中的排名,从而获得更多的有价值的流量。 而关键词研究和选择是SEO优化中最基础也是最关键的环节,它决定了网站将面向哪些用户、哪些关键词和词组将被优…...
设计模式—适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,…...
OpenAI-J 如何进行测试
当你检出 OpenAI-J 项目以后,你可以对 OpenAI-J 进行测试。在测试之前你首先需要获得 OpenAI 的 API Key。OpenAI 的 Key通常是以 sk 开头的字符串。最简单粗暴的办法就是把获得的 key 替换掉上面的字符串,然后进行测试就可以了。运行 Unit 测试在我们的…...
课设-机器学习课设-实现新闻分类
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :课设-机器学习 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,…...
关于异常控制流和系统级 I/O:进程
💭 写在前面:本文将学习《深入理解计算机系统》的第六章 - 关于异常控制流和系统级 I/O 的 进程部分。CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写,该教材由Randal E. Bryant和David R. OHallaron 合著…...
Unet 基于TCGA颅脑肿瘤MRI分割(交叉熵损失+多通道输出)
目录 1. 介绍 2. Unet 2.1 unet 代码 2.2 测试网络 3. dataset 数据加载 4. train 训练...
货物摆放(蓝桥杯C/C++省赛)
题目描述 小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所有的货物最…...
mysql 索引原理
文章目录 1、索引的本质2、索引的分类2.1、Hash 索引2.2、二叉树2.4、B树(二三树)2.5、B+树3、主键目录4、索引页5、索引页的分层6、非主键索引7.回表1、索引的本质 索引的本质是一种排好序的数据结构。 2、索引的分类 在数据库中,索引是分很多种类的(千万不要狭隘的认为…...
【Linux】文件系统详解
😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享C/C相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...
3句代码,实现自动备份与版本管理
前言:服务器开发程序、测试版本等越来越多,需要及时做好数据的版本管理和备份,作为21世界的青年,希望这些事情都是可以自动完成,不止做了数据备份,更重要的是做好了版本管理,让我们可以追溯我们…...
华为OD机试题 - 删除指定目录(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:删除指定目录题目输入输出示例一输入输出说明Code解题思路华为O…...
3分钟上手,2小时起飞!教你玩转OceanBase Cloud
盼星星盼月亮!掰掰手指,距离 3 月 25 日还有 123456......两周啦🤩~ 除了白天的主论坛和分论坛的精彩分享外,晚间的 3 场 Hands-on Workshop 动手实验营也深得大家期待,从部署到迁移,从 On-Premise 到 Clou…...
location对象详解
location对象 location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档信息,还提供了一些导航功能。既是window对象,也是document对象的属性,即window.location和document.location引用的是同一个对象。它主要的功能有以下…...
【强度混合和波段自适应细节融合:PAN-Sharpening】
Intensity mixture and band-adaptive detail fusion for pansharpening (用于全色锐化的强度混合和波段自适应细节融合) 全色锐化的目的是通过高分辨率单通道全色(PAN)图像锐化低分辨率多光谱(MS)图像&a…...
【随笔】《挥手自兹去》
挥手自兹去那样美的一束光照在我身上,挥手自兹去,下次又要何时再见?那日闲来无事,到小区前的公园里散步。绿草如因,野花点点,阳光照的人很舒服。一片空地上,我看见了一个女孩,她那么…...
华为OD机试题 - 最差产品奖(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:最差产品奖题目输入输出示例一输入输出说明Code版权说明华为OD其…...
虚拟化介绍
1、为什么需要虚拟化 据调查传统的服务器在很多时候处于休眠状态,大概只有5%时间是在工作,工作效率低下,浪费资源,因此需要一种手段来提高计算机资源的利用率。 虚拟化前 每台主机一个操作系统 在同一台主机运行多个应用程序&am…...
c/c++开发,无可避免的模板编程实践(篇十)-c++11原位构造元素(emplace)
一、容器修改器的新特性 c11以前,标准库的容器修改器功能提供了数据插入成员函数inset、push_back,而在 c11标准化,标准库的容器修改器增加了emplace、emplace_back、emplace_front等插入成员函数。同样是插入函数,两者有何区别呢…...
基于bash通过cdo批处理数据
***#################################### ubuntu中编写shell脚本文件 第一步:用vim创建一个以.sh结尾的文件,此时这个文件是暂时性的文件,当编写好文件并保存时才能看到文件; 第二步:要首先按一下“i”键才能进行插入…...
Map和Set总结
Map和Set Map和Set是专门用来进行搜索的数据结构,适合动态查找 模型 搜索的数据称为关键字(key),关键字对应的叫值(value),key-value键值对 key模型key-value模型 Map存储的就是key-value模型,Set只存储了key Map Map是接口类…...
pytorch网络模型构建中的注意点
记录使用pytorch构建网络模型过程遇到的点 1. 网络模型构建中的问题 1.1 输入变量是Tensor张量 各个模块和网络模型的输入, 一定要是tensor 张量; 可以用一个列表存放多个张量。 如果是张量维度不够,需要升维度, 可以先使用 …...
面试时候这样介绍redis,redis经典面试题
为什么要用redis做缓存 使用Redis缓存有以下几个优点: 1. 提高系统性能:缓存可以将数据存储在内存中,加快数据的访问速度,减少对数据库的读写次数,从而提高系统的性能。 2. 减轻后端压力:使用缓存可以减…...
机械学习 - scikit-learn - 数据预处理 - 2
目录关于 scikit-learn 实现规范化的方法详解一、fit_transform 方法1. 最大最小归一化手动化与自动化代码对比演示 1:2. 均值归一化手动化代码演示:3. 小数定标归一化手动化代码演示:4. 零-均值标准化(均值移除)手动与自动化代码演示&#x…...
华为OD机试题 - 最长连续交替方波信号(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:最长连续交替方波信号题目输入输出示例一输入输出Code解题思路版…...
executor行为相关Spark sql参数源码分析
0、前言 参数名和默认值spark.default.parallelismDefault number of partitions in RDDsspark.executor.cores1 in YARN mode 一般默认值spark.files.maxPartitionBytes134217728(128M)spark.files.openCostInBytes4194304 (4 MiB)spark.hadoop.mapreduce.fileoutputcommitte…...
重庆高端网站建设/重庆网站推广联系方式
在听毕向东的面向对象时,其总结了创建对象的过程: 1、加载指定的字节码文件进内存。 2、通过new在堆内存中开辟空间,分配首地址值。 3、对对象属性进行默认初始化。 4、调用与之对应的构造函数,构造函数压栈。 5、构造函数中执行隐…...
wordpress vieu主题4.0/长沙网站推广seo
2019独角兽企业重金招聘Python工程师标准>>> 使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客…...
春哥技术团队网站建设/中国国家人事人才培训网
我们按照表示的设计 以及: package com.weiyuan.goods.category.domain;import java.util.List;public class Category {private String cid;//主键private String cname;//分类的名称private String desc;//分类的描述private Category parent ;//父分类࿰…...
什么网站都可以进入的浏览器/自媒体平台注册官网
函数是JavaScript世界里的第一公民,换句话来说,就是我们如果可以精通JavaScript函数的使用,那么对JavaScript的运用可以更游刃有余了。熟悉JavaScript的人应该都知道,同样的函数,以不同的方式调用的话,受影…...
做网站客户拖着不验收/亚马逊关键词优化怎么做
前言 之前总是在找方向,也研究了很多的工具,终于找到了适合自己的一套,打算把学习的过程做一个记录,给自己加深印象,也希望能给其他人一些帮助。 一、工具准备 1、Appium // http://appium.io/ 2、GenymotionOracel …...
wordpress引用b站视频/100个成功营销案例
事实上,调用File.Delete并没有删除文件,它只是让操作系统认为文件不存在,文件在磁盘上的空间被标记成空的,以便用于再次使用。但是文件的数据没有被移除,您可以非常容易恢复。被删除的文件直到相应的空间被重写才会真消…...