位置: 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版本创建项目)

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

  • 中芯国际:目前暂未收到荷兰出口管制等相关通知

    中芯国际:目前暂未收到荷兰出口管制等相关通知

  • 微信视频会议人数限制是(微信视频会议室)

    微信视频会议人数限制是(微信视频会议室)

  • 快手自动关注别人怎么回事(快手自动关注别人软件)

    快手自动关注别人怎么回事(快手自动关注别人软件)

  • 苹果测距仪有误差吗(iphone测距仪无法使用)

    苹果测距仪有误差吗(iphone测距仪无法使用)

  • 抖音隔多久发第二个作品(抖音隔多久发第一个作品)

    抖音隔多久发第二个作品(抖音隔多久发第一个作品)

  • 微信下载的视频在哪里(微信下载的视频文件存在手机什么位置)

    微信下载的视频在哪里(微信下载的视频文件存在手机什么位置)

  • 录屏在哪儿(录屏在哪儿开苹果)

    录屏在哪儿(录屏在哪儿开苹果)

  • h110m支持什么cpu(h110主板支持几代cpu)

    h110m支持什么cpu(h110主板支持几代cpu)

  • 微信有一条未读消息却找不到(微信有一条未读信息为什么找不到)

    微信有一条未读消息却找不到(微信有一条未读信息为什么找不到)

  • 抖音被评级多久能恢复(抖音被评级多久恢复)

    抖音被评级多久能恢复(抖音被评级多久恢复)

  • 旧电脑的硬盘可以接到新电脑吗(旧电脑的硬盘可以直接用吗)

    旧电脑的硬盘可以接到新电脑吗(旧电脑的硬盘可以直接用吗)

  • 小米6短信闪退(小米短信闪退解决办法)

    小米6短信闪退(小米短信闪退解决办法)

  • 手机每次充电必须充满吗(手机每次充电必须重启)

    手机每次充电必须充满吗(手机每次充电必须重启)

  • 手机京东怎么查看预约的商品(手机京东怎么查看电子发票)

    手机京东怎么查看预约的商品(手机京东怎么查看电子发票)

  • 暂不支持插卡表缴费是什么意思(占不支持插卡表缴费)

    暂不支持插卡表缴费是什么意思(占不支持插卡表缴费)

  • 天猫精灵有录音功能吗(天猫精灵有录音和录像吗)

    天猫精灵有录音功能吗(天猫精灵有录音和录像吗)

  • 手机自动开流量怎么办(手机怎样充流量)

    手机自动开流量怎么办(手机怎样充流量)

  • 华为手机如何去掉圆点(华为手机如何去除马赛克看原图)

    华为手机如何去掉圆点(华为手机如何去除马赛克看原图)

  • 魅族16th plus充电速度(魅族16thplus充电器多少w)

    魅族16th plus充电速度(魅族16thplus充电器多少w)

  • 电池医生怎么检查电池(电池医生的电池健康度准吗)

    电池医生怎么检查电池(电池医生的电池健康度准吗)

  • pixel3xl尺寸(pixel3xl参数)

    pixel3xl尺寸(pixel3xl参数)

  • qq上原文件失效怎么办(qq文件失效可以恢复吗)

    qq上原文件失效怎么办(qq文件失效可以恢复吗)

  • win10下载不了软件(w10下载不了软件)

    win10下载不了软件(w10下载不了软件)

  • 苹果x怎么改蓝牙名称(苹果x怎么改蓝牙耳机名字)

    苹果x怎么改蓝牙名称(苹果x怎么改蓝牙耳机名字)

  • php程序首页栏目怎样修改(phpstudy网站首页设置)

    php程序首页栏目怎样修改(phpstudy网站首页设置)

  • 华为怎么升级9.1(华为怎么升级app)

    华为怎么升级9.1(华为怎么升级app)

  • 新版taptap怎么改地区(taptap游戏修改教程)

    新版taptap怎么改地区(taptap游戏修改教程)

  • 小米8充电器多少w(小米8充电器多少A快充)

    小米8充电器多少w(小米8充电器多少A快充)

  • 科尼西宫的花园,佛罗伦萨 (© Will Perrett/Alamy)(科尼西卡神庙在哪里)

    科尼西宫的花园,佛罗伦萨 (© Will Perrett/Alamy)(科尼西卡神庙在哪里)

  • 二手房交易需缴纳哪些费用
  • 增值税不含税销售额怎么计算
  • 发票的规格和型号有哪些
  • 发票已经做账但要退款账不平咋办
  • 出口货物退货需要退税吗
  • 经营性项目应收减少额怎么算
  • 资产负债表预收账款期末余额怎么算
  • 小规模企业怎么报税
  • 营改增后挂靠开票作收入吗?
  • 增值税税负率计算包含附加税吗
  • 销售返利的税务政策
  • 固定资产入账价值包括
  • 房租开的专票怎么做账
  • 作为职工福利费取得的专用发票不能抵扣吗
  • 租赁收入账务处理
  • 固定资产清理的借贷方向表示什么
  • 农产品普通发票抵扣怎么申报
  • 权利许可证照印花税每个月都要交吗
  • 旧设备出口要交增值税吗
  • 净资产怎么算的 视频
  • 跨年度专用发票如何开红字发票
  • 软件行业的收入怎么样
  • mac屏蔽显卡教程
  • php问卷调查系统课程设计
  • 分享php入门的学校有哪些
  • 承租人经营租赁会计分录
  • 增值税发票销货清单怎么打印
  • wordpress优化加快的好多个关键点
  • PHP aes (ecb)解密后乱码问题
  • 增值税纳税筹划案例最新
  • vue 自动部署
  • php编写用户注册界面
  • nginx同一个端口设置两个网站
  • php数据统计分析
  • php字符串比较函数怎么写
  • 利用php抓取蜘蛛网
  • vf中显示命令
  • 如何在最新版本钉钉上使用支付审申请
  • 应付账款盘点表
  • 生产劳务成本会计分录
  • 管家婆实收资本显示负数什么原因
  • 进项税额转出会影响当期纳税吗?
  • 帝国cms8.0
  • 实施资本公积金的目的
  • 印花税按金额还是价税合计交
  • 视同销售是填在申报表的哪一栏?
  • sqlserver2000分页
  • 接受捐赠的增值税计入会计利润吗
  • 以前年度损益调整会计分录
  • 公司个税如何申报流程
  • 厂房维修费是制造费用还是管理费用
  • 以前年度损益调整属于哪类科目
  • 个人独资企业一般纳税人享受六税两费
  • 跨月的增值税专用发票怎么冲红或者是作废
  • 航空货运票据可以抵扣吗
  • 购税盘怎么做会计分录
  • 金税三期个税申报
  • 将购进药品销售给药品生产企业或药品经营企业的是
  • 单位买的职工社保自己可以去社保局领卡吗
  • 购买原材料保险费分录
  • 项目完工后员工工作总结
  • 事业单位小规模纳税人咨询服务的税率
  • mysql重置binlog
  • mysql中索引有什么用
  • win8.1关机
  • 硬盘xp系统
  • windows7更新补丁后蓝屏
  • win8.1 安装ie10
  • win7蓝牙驱动软件
  • javascript延迟执行
  • javascript运行在什么的脚本语言
  • android设置移动网络灰色是什么原因
  • 安卓手机管家哪个好用
  • webview清除数据
  • android 自定义style
  • 税务局副局长分管业务
  • 合肥房子契税退税
  • 江苏增值税发票代码
  • 什么是增值税留抵退税
  • 珠海地区电话区号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设