位置: IT常识 - 正文

【JavaScript 刨根问底之】requestAnimationFrame以及延时器

编辑:rootadmin
【JavaScript 刨根问底之】requestAnimationFrame以及延时器 requestAnimationFrame

推荐整理分享【JavaScript 刨根问底之】requestAnimationFrame以及延时器,希望有所帮助,仅作参考,欢迎阅读内容。

【JavaScript 刨根问底之】requestAnimationFrame以及延时器

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

这里会说下requestAnimationFrame的由来,以及为什么会出现它。同时也会横向对比下定时器以及延时器

早期的动画

动画是一个持续的过程。早期的时候动画都是通过定时器来实现的。看如下代码

(function() { function updateAnimations() { doAnimation1(); doAnimation2(); // 其他任务 } setInterval(updateAnimations, 100); })();一般的计算器显示器的屏幕刷新频率是60HZ,这就意味着是每秒要绘制60次。大多数浏览器都会显示绘制频率。为了实现动画效果过渡平滑最佳的重绘间隔大约17/毫秒。以这个速度重绘可以实现最佳的滑动效果。但是即使是这样依然无法保证能平滑过度。因为延时器/定时器的执行的时机不定。虽然可以设置执行时间。即使将延时任务添加到队列中也无法保证能立马执行。这取决于上一个任务或是同步任务执行的时间长度从js层面无法得知浏览器的绘制时机。所以函数requestAnimationFrame就出现了函数requestAnimationFrame1. 执行时机在每次浏览器重绘之前执行2. 使用方法函数requestAnimationFrame只允许传递一个参数。而且参数必须是一个函数参数函数会被加入到队列。在每次浏览器绘制之前将队列中的函数进行执行每添加一次再下次绘制执行后,需要再次添加function updateProgress() { var div = document.getElementById("status"); div.style.width = (parseInt(div.style.width, 10) + 5) + "%"; if (div.style.left != "100%") { requestAnimationFrame(updateProgress); } } requestAnimationFrame(updateProgress);3. 如何取消

在全局中提供了函数cancelAnimationFrame. 可以通过函数进行取消。大致的原理跟延时器/ 定时器保持一致

在函数requestAnimationFrame将函数加入队列后,会返回一个id(可以将id理解为队列的位置)。可以通过执行函数cancelAnimationFrame来进行取消let requestID = window.requestAnimationFrame(() => { console.log('Repaint!'); }); window.cancelAnimationFrame(requestID);通过函数requestAnimationFrame进行节流处理let enabled = true;function expensiveOperation() { console.log('Invoked at', Date.now()); } window.addEventListener('scroll', () => { if (enabled) { enabled = false; window.requestAnimationFrame(expensiveOperation); window.setTimeout(() => enabled = true, 50); } });
本文链接地址:https://www.jiuchutong.com/zhishi/299921.html 转载请保留说明!

上一篇:idea2021版本创建一个javaweb项目(含额外知识--添加tomcat相关jar包)(idea2021版本创建项目)

下一篇:作用域和作用域链(作用域和作用域链的理解)

  • 小米浏览器图标不见了(小米浏览器图标没了)

    小米浏览器图标不见了(小米浏览器图标没了)

  • 远程控制电脑为什么打不了字(远程控制电脑为啥点了没反应?)

    远程控制电脑为什么打不了字(远程控制电脑为啥点了没反应?)

  • 钉钉撤回的消息对方还能看到吗(钉钉撤回的消息怎么查看)

    钉钉撤回的消息对方还能看到吗(钉钉撤回的消息怎么查看)

  • 腾讯会议录屏时怎么录不了视频原声(腾讯会议录屏时间限制)

    腾讯会议录屏时怎么录不了视频原声(腾讯会议录屏时间限制)

  • mi8ud是探索版吗(mi8ud怎么样)

    mi8ud是探索版吗(mi8ud怎么样)

  • 京东地址电话号码怎么显示不全(京东地址电话号码是多少)

    京东地址电话号码怎么显示不全(京东地址电话号码是多少)

  • 重装系统后软件如何恢复原状(重装系统后软件打不开)

    重装系统后软件如何恢复原状(重装系统后软件打不开)

  • 华为手机屏幕不灵敏怎么办(华为手机屏幕不亮了但是还有声音)

    华为手机屏幕不灵敏怎么办(华为手机屏幕不亮了但是还有声音)

  • 微信非好友还能发消息(微信非好友还能转账吗)

    微信非好友还能发消息(微信非好友还能转账吗)

  • 手机嗡嗡响是怎么回事(手机嗡嗡响是怎么回事但是没有显示)

    手机嗡嗡响是怎么回事(手机嗡嗡响是怎么回事但是没有显示)

  • 小米账号可以同时登录几个设备(小米账号同步怎么关闭)

    小米账号可以同时登录几个设备(小米账号同步怎么关闭)

  • 文件管理保密柜密码忘了怎么办(文件管理保密柜的照片删除了怎么恢复?)

    文件管理保密柜密码忘了怎么办(文件管理保密柜的照片删除了怎么恢复?)

  • 红米7a是不是全面屏(红米7a是安卓几)

    红米7a是不是全面屏(红米7a是安卓几)

  • vivox27微信能美颜吗(vivox27微信怎么美颜)

    vivox27微信能美颜吗(vivox27微信怎么美颜)

  • 快手下载别人的原图作者会知道吗(快手下载别人的作品别人知道吗)

    快手下载别人的原图作者会知道吗(快手下载别人的作品别人知道吗)

  • 抖音上地址怎么老是换(抖音上地址怎么改)

    抖音上地址怎么老是换(抖音上地址怎么改)

  • 小米平板4打电话教程(小米平板4打电话破解)

    小米平板4打电话教程(小米平板4打电话破解)

  • 华为note3支持人像处理么(华为note3e有nfc吗)

    华为note3支持人像处理么(华为note3e有nfc吗)

  • excel开发工具选项卡在哪(excel开发工具选项按钮如何设置 二选一)

    excel开发工具选项卡在哪(excel开发工具选项按钮如何设置 二选一)

  • 华为电脑指纹传感器在哪(华为电脑指纹传感器在哪里设置)

    华为电脑指纹传感器在哪(华为电脑指纹传感器在哪里设置)

  • 华为p30防水么(华为p30防水不?)

    华为p30防水么(华为p30防水不?)

  • 如何给电脑重装系统 重装系统步骤图解(如何给电脑重装系统教程)

    如何给电脑重装系统 重装系统步骤图解(如何给电脑重装系统教程)

  • 【Vue全家桶】新一代的状态管理--Pinia(vue全家桶教程)

    【Vue全家桶】新一代的状态管理--Pinia(vue全家桶教程)

  • 购买车辆保险的报告
  • 进项税额转出期限是多少
  • 发放工资的转账支票出票人是谁
  • 进销存工作流程
  • 资产负债表季报本月数怎么填
  • 工会经费如何申报?
  • 税控服务费如何入账
  • 企业资产损失所得税税前扣除办法
  • 逾期认证未抵扣的文件
  • 建筑清包工的账务处理
  • 建筑劳务公司的工资计入什么科目
  • 国库集中支付行政运行
  • 无合同销售收入怎么算
  • 餐饮业购买餐桌椅会计分录
  • 实施计划成本存货发生毁损的会计处理怎么做?
  • 企业所得税汇算清缴退税账务处理
  • 交通补贴可以抵扣个税吗
  • 国税开运输发票后地税怎么报税?
  • 企业个人所得税逾期未申报怎么办
  • 何为销项税额
  • 对公账户转法人私人账户用途写什么
  • 新成立的公司季报
  • 年数总和法折旧公式
  • 股东个人所得税怎么申报
  • 餐饮业租赁要求
  • 有限合伙创投企业
  • OS X Yosemite系统下载失败怎么办?OS X 10.10下载错误解决方法
  • 通行费发票可以抵扣吗
  • 支付借款利息怎么做账
  • 关于汇算清缴的问题
  • Linux Mount NTFS分区造成的权限问题如何解决?
  • 土地承包费收入怎么做账务处理
  • 不属于工资薪金所得的是
  • php页面刷新代码
  • k8s安装步骤
  • C++ Linux Web Server 面试基础篇-操作系统(四、线程通信)
  • yolo算法百度百科
  • 简单易学的前端框架
  • 以前年度损益调整账务处理分录
  • 所得税预缴申报表资产总额怎么填
  • 企业研发费用资本化相关公司
  • 公司开普票和专票税率一样吗
  • 生产企业购入原材料
  • 小规模租金可以抵税吗
  • 委托加工物资的消费税
  • 职工报销的医药费是什么
  • 律师事务所收到专票能抵扣吗合法吗
  • 按揭房办理抵押贷款
  • 商场活动经费预算
  • 有限责任公司和有限公司区别在哪
  • 无票收入如何做凭证
  • 人工费用和管理费用比例
  • 库存周转率中销量怎么算
  • 一般什么是差旅费呢
  • 航天金税盘维护费发票在哪打印
  • 营改增账务处理实例
  • sql server数据库跟踪
  • 索引的基本原则
  • mysql里删除表里的数据
  • 微软官方win10启动盘
  • 禁用windows键快捷键
  • centos怎么扩容
  • windows怎么拨号
  • SymSPort.exe - SymSPort是什么进程 有何作用
  • xp开机chkdsk
  • win7共享设置(详细图文步骤)
  • win7系统怎么用无线接收器怎么用
  • win7一直处于开机界面
  • linux 源文件
  • 没有触屏如何使手机充电
  • win10系统更改
  • ,linux
  • node分页接口
  • fedora开机启动版本太多
  • node js require
  • Unity for Absolute Beginners(一)
  • 一款简单的网络版多媒体课件制作软件是什么
  • 重庆市委常委是副部级干部吗?
  • 中山大学税务硕士
  • 个人所得税年申报与月申报区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设