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

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

  • 微信营销方案证明怎么写?(微信营销方案证明怎么写)

    微信营销方案证明怎么写?(微信营销方案证明怎么写)

  • 粉丝经济:从吸引到忠诚(粉丝经济是一把什么,利用的好可以无往不利)

    粉丝经济:从吸引到忠诚(粉丝经济是一把什么,利用的好可以无往不利)

  • 品牌营销如打怪升级,升的到底是什么级?(

    品牌营销如打怪升级,升的到底是什么级?("品牌营销")

  • 苹果13是5g手机吗(苹果13是5g手机还是4g手机视频)

    苹果13是5g手机吗(苹果13是5g手机还是4g手机视频)

  • 苹果手机怎么用搜狗输入法(苹果手机怎么用nfc)

    苹果手机怎么用搜狗输入法(苹果手机怎么用nfc)

  • 怎么突然变2G信号了(为什么突然变成2g信号)

    怎么突然变2G信号了(为什么突然变成2g信号)

  • 7.9寸ipad多大(7.9寸ipad多大图片)

    7.9寸ipad多大(7.9寸ipad多大图片)

  • 酷狗音乐收藏的音乐为什么会自动没了(酷狗音乐收藏的歌曲没了怎么找回?)

    酷狗音乐收藏的音乐为什么会自动没了(酷狗音乐收藏的歌曲没了怎么找回?)

  • 快手账号异常无法更新个人介绍(快手账号异常无法登录)

    快手账号异常无法更新个人介绍(快手账号异常无法登录)

  • tittl00是什么手机(trtal00什么型号)

    tittl00是什么手机(trtal00什么型号)

  • 耳机插口不灵敏怎么办(耳机插孔不灵敏)

    耳机插口不灵敏怎么办(耳机插孔不灵敏)

  • 几个人标记电话才显示(几个人标记电话才显示为骚扰电话)

    几个人标记电话才显示(几个人标记电话才显示为骚扰电话)

  • 手机的喇叭有滋滋滋声怎么办(手机喇叭滋啦)

    手机的喇叭有滋滋滋声怎么办(手机喇叭滋啦)

  • 淘宝淘气值有什么用(淘宝淘气值有什么用 知乎)

    淘宝淘气值有什么用(淘宝淘气值有什么用 知乎)

  • 微信被屏蔽后显示什么(微信被屏蔽之后发消息是怎样的)

    微信被屏蔽后显示什么(微信被屏蔽之后发消息是怎样的)

  • 键盘87和108键区别(键盘87和108键哪个舒服)

    键盘87和108键区别(键盘87和108键哪个舒服)

  • 手机京东申请退款流程(手机京东申请退款怎么取消)

    手机京东申请退款流程(手机京东申请退款怎么取消)

  • 电脑运行一会自动重启(电脑运行一会自动关机怎么回事)

    电脑运行一会自动重启(电脑运行一会自动关机怎么回事)

  • ios怎么下载哔咔(ios怎么下载哔咔动漫)

    ios怎么下载哔咔(ios怎么下载哔咔动漫)

  • 小谷陪伴机器人怎么联网(小谷陪伴机器人说明书)

    小谷陪伴机器人怎么联网(小谷陪伴机器人说明书)

  • pr导出mxf格式如何设置码率(pr里导出mp4格式)

    pr导出mxf格式如何设置码率(pr里导出mp4格式)

  • vivox9如何备份(vivox9如何备份照片)

    vivox9如何备份(vivox9如何备份照片)

  • 安卓手机怎么恢复聊天记录(安卓手机怎么恢复删除的软件)

    安卓手机怎么恢复聊天记录(安卓手机怎么恢复删除的软件)

  • 大学生web前端期末大作业实例代码 (1500套,建议收藏) HTML+CSS+JS(大学生web前端期刊有哪些)

    大学生web前端期末大作业实例代码 (1500套,建议收藏) HTML+CSS+JS(大学生web前端期刊有哪些)

  • 税款所属期
  • 计提附加税金额
  • 企业回购股票会使所有者权益
  • 费用化支出期末结转
  • 投资者回售选择权是什么意思
  • 一般纳税人可以转小规模纳税人吗
  • 土地使用税延期还延续吗
  • 固定资产属于净资产的哪一项
  • 企业购买扶贫物资怎么入账
  • 违约金 罚款
  • 没有计提12月底的工资
  • 2年前的增值税发票能不能用
  • 销售人员差旅费管理办法
  • 软件开发过程中采用多种图形化工具
  • 维修开票单位写什么
  • 图书对方开具的证明
  • 金税盘电子发票怎么开
  • 不能抵扣的进项发票怎么做分录
  • 主营业务净利率和销售净利率一样吗
  • 不征税的通行费怎么分录
  • 出租固定资产收取租金
  • 苹果系统中英文切换快捷键
  • 微信转账记录怎么加回好友?
  • 跨年的费用可以直接入账吗
  • 安装固定资产的费用
  • 没有以前年度损益调整怎么办
  • 网件R6400路由器怎么样?R6400拆解与内部结构评测
  • 出租厂房折旧可以税前扣除
  • php反序列化pop链
  • jdk1.8环境变量设置
  • php echo \n
  • sdstat.exe - sdstat是什么进程 有什么用
  • jusched.exe
  • i33240配什么主板
  • 厂房押金不退怎么要回来
  • 约克郡在哪
  • 商誉减值后
  • 元宇宙区块链数字货币
  • git简明教程
  • 运筹最优化方法有哪些
  • node实战
  • 财务支出表怎么做
  • 微服务网关作用
  • python for循环遍历
  • 比赛奖金怎么做账
  • 进料加工出口退税核销最新流程
  • 个税哪种申报不用交个税的
  • 事业单位长期应付款呆账怎样处理好
  • mysql正则表达式匹配数字
  • sql中身份证号码用什么类型
  • 进项税多记了怎么调账
  • 营改增之后建筑业预收账款是否需要预交税款
  • mysql乱码问题怎么解决
  • 一般纳税人公司开普票几个税点?
  • 三个月 租房
  • 如何冲减计提费用
  • 外币交易的账户设置
  • 以公允价值计量的金融资产
  • 协会会费怎么入账
  • 农业企业纳税申报
  • 如何把数据生成表格
  • windows vista界面
  • win8系统怎么安装微信
  • 系统盘gpt转mbr
  • 一台电脑多个用户组怎么显示在一个屏幕上
  • ubuntu怎么刷新桌面
  • xp系统进入桌面后没反应
  • 打开字符面板
  • Windows命令行删除文件夹
  • es6解构函数
  • github比较火的项目
  • JavaScript驾驭网页-获取网页元素
  • javascript入门基础
  • linux磁盘空间满了怎么办,硬盘空间还有很多
  • JavaScript对象的创建
  • 深入学习习总书记系列讲话精神
  • Mongoose中document与object的区别示例详解
  • js并且判断
  • javascript书写基本规范
  • 广西南宁税务12366
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设