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

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

  • 微商软文也需要技巧吗?答案全都在这里(微商写软文)

    微商软文也需要技巧吗?答案全都在这里(微商写软文)

  • 华为蓝牙耳机怎么连接手机(华为蓝牙耳机怎么用)

    华为蓝牙耳机怎么连接手机(华为蓝牙耳机怎么用)

  • 安卓手机如何打开.mobi文件(安卓手机如何打开.bin文件)

    安卓手机如何打开.mobi文件(安卓手机如何打开.bin文件)

  • 屏幕录制怎么没有声音(屏幕录制怎么没有画面)

    屏幕录制怎么没有声音(屏幕录制怎么没有画面)

  • 电脑主机可不可以连电视(电脑主机可不可以平着放)

    电脑主机可不可以连电视(电脑主机可不可以平着放)

  • oppoa11可以开空调吗(oppo 能不能开空调)

    oppoa11可以开空调吗(oppo 能不能开空调)

  • iPhonexr为什么红色比较便宜(xr红屏怎么回事)

    iPhonexr为什么红色比较便宜(xr红屏怎么回事)

  • 用集分宝买的东西退货集分宝会退回吗(用集分宝商家收到的是钱吗)

    用集分宝买的东西退货集分宝会退回吗(用集分宝商家收到的是钱吗)

  • 发朋友圈照片颜色变了(发朋友圈照片颜色变黄)

    发朋友圈照片颜色变了(发朋友圈照片颜色变黄)

  • 手机没有密码怎么打开(手机没有密码怎么连接别人的wifi)

    手机没有密码怎么打开(手机没有密码怎么连接别人的wifi)

  • 戴尔电脑关机快捷键(戴尔电脑关机慢怎么回事)

    戴尔电脑关机快捷键(戴尔电脑关机慢怎么回事)

  • 十进制256转换为二进制结果是(十进制256转换为八进制)

    十进制256转换为二进制结果是(十进制256转换为八进制)

  • 一般采用什么技术来保障网络安全(采用的方式)

    一般采用什么技术来保障网络安全(采用的方式)

  • 降频是什么意思(电脑降频是什么意思)

    降频是什么意思(电脑降频是什么意思)

  • 手机qq如何开启临时会话(手机QQ如何开启密保)

    手机qq如何开启临时会话(手机QQ如何开启密保)

  • 淘宝帮买消息是什么意思啊(淘宝帮买消息是真的吗)

    淘宝帮买消息是什么意思啊(淘宝帮买消息是真的吗)

  • 电脑键盘x号怎么打出来(电脑键盘x怎么输入)

    电脑键盘x号怎么打出来(电脑键盘x怎么输入)

  • qq音乐怎么赠送铭牌(qq音乐怎么赠送三天vip给好友)

    qq音乐怎么赠送铭牌(qq音乐怎么赠送三天vip给好友)

  • 论文如何自动生产目录(论文如何自动生成目录和页码wps)

    论文如何自动生产目录(论文如何自动生成目录和页码wps)

  • 手机淘宝生日在哪设置(手机淘宝生日在哪里设置)

    手机淘宝生日在哪设置(手机淘宝生日在哪里设置)

  • 淘宝怎么关闭农村淘宝(新版淘宝怎样关闭农村淘宝)

    淘宝怎么关闭农村淘宝(新版淘宝怎样关闭农村淘宝)

  • ipad第七代发布时间(ipad2020第七代)

    ipad第七代发布时间(ipad2020第七代)

  • 计算机内存中用于存储信息的部件是(电脑在哪看内存条信息)

    计算机内存中用于存储信息的部件是(电脑在哪看内存条信息)

  • 华为p30pro双卡吗(华为p30pro是否双卡)

    华为p30pro双卡吗(华为p30pro是否双卡)

  • vivoz3i呼吸灯在哪里设置(vivoiqooz3呼吸灯)

    vivoz3i呼吸灯在哪里设置(vivoiqooz3呼吸灯)

  • iphonexr电量百分比在哪里(iphonexr电量百分比)

    iphonexr电量百分比在哪里(iphonexr电量百分比)

  • macOS 10.15怎么升级? macOS 10.15升级图文教程(macos10.10.5怎么升级)

    macOS 10.15怎么升级? macOS 10.15升级图文教程(macos10.10.5怎么升级)

  • 分享帝国cms自动加水印的实现方法(帝国cms使用手册)

    分享帝国cms自动加水印的实现方法(帝国cms使用手册)

  • 公司出让上一任股东拥有的公司25%股权如何做账?
  • 建筑业的增值税税率是多少
  • 对方公司已注销如何付款
  • 企业所得税税款可以扣除吗
  • 个人所得税孩子小学升初中要修改吗?
  • 现流表怎么编
  • 跨境电商的钱怎么到账
  • 发票抬头不完整能用吗
  • 按税收规定计算的扣除额公益性捐赠
  • 纳税人必知的十七项增值税开票指南
  • 已抵扣发票如何查询开票明细
  • 快递公司怎么结算
  • 怎么核算外汇业务
  • 收取现金后的收入怎么算
  • 全部出售子公司怎么做账
  • 哪里查询发票是否抵扣
  • 非现金资产包括
  • 购入的会计分录怎么写
  • 生产的废料怎么做账
  • 在win7系统中怎样为另外一块硬盘安装系统
  • ibm笔记本进bios
  • 退货需要进行的操作
  • php版本升级
  • vue多模块多项目集成
  • php生成二维码源码
  • php function
  • web-inf lib
  • 从零开始吧
  • javaweb项目简介
  • fmt println
  • ftp命令行
  • 怎么修改手机的地理位置
  • 将本月发生的制造费用总额按生产工人
  • 内账增值税怎么计提
  • 根据《中华人民共和国食品安全法》
  • 管理费用属于损益类吗
  • 对公付款对方不发货不退钱怎么处理
  • mysql内存使用率过高
  • 其他应付款如何清零
  • 前几个月的印花税怎么算
  • 已开票未收款怎么报税
  • 外借资质交企业所得税怎么交
  • 电子汇票接收后怎么操作
  • 进项税和销项税怎么理解
  • 电子承兑到期怎么申请付款
  • 待认证进项发票哪里导出来数据
  • 商业企业包装物包括哪些
  • winxp设置在哪
  • 如何设置谷歌搜索
  • 设置共享时可使用的权限
  • 加入跨子网路由什么协议
  • macbookpro隐藏
  • win8打开桌面
  • mac怎么设置应用权限
  • exe什么意思?
  • .exe是啥程序
  • win7系统如何安装蓝牙驱动
  • centos怎么样
  • imessage如何群发
  • linux 判断语句
  • win8电脑d盘不见了怎么恢复
  • Win10打开浏览器就未响应
  • win10系统保留分区可以删除吗
  • win8.1系统怎么升级到win10
  • wp8.1升级10
  • javascript怎么学
  • linux中退出
  • 完美解决怠速抖动加油就平稳
  • shell脚本 -mtime
  • rsa python3
  • typeto
  • 购房发票怎么查验
  • 一般纳税人开租赁费发票税率是多少
  • 北京24小时税务自助机
  • 辽宁网上怎么申请港澳签证流程
  • 怎么查询地方规划用地
  • 发票号码的8位是什么
  • 城镇土地使用税的计算公式
  • 大连开发区哪家自助餐好吃还便宜
  • 税务登记办法细则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设