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

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

  • vivox50是5G手机吗(vivox50是5g网络吗)

    vivox50是5G手机吗(vivox50是5g网络吗)

  • 苹果11如何关闭拍照声音(苹果11如何关闭境外来电)

    苹果11如何关闭拍照声音(苹果11如何关闭境外来电)

  • airpods磁铁擦不掉(airpodspro磁铁有问题)

    airpods磁铁擦不掉(airpodspro磁铁有问题)

  • 华为什么手机支持lr键(华为什么手机支持车载无线充电)

    华为什么手机支持lr键(华为什么手机支持车载无线充电)

  • oppo手机设置里怎样才能找到通用(oppo手机设置里没有通用咋办)

    oppo手机设置里怎样才能找到通用(oppo手机设置里没有通用咋办)

  • oppo手机相册里收藏在哪里看(oppo手机相册里的视频怎么剪辑)

    oppo手机相册里收藏在哪里看(oppo手机相册里的视频怎么剪辑)

  • 华为屏幕指纹解锁特效怎么改(华为屏幕指纹解锁样式怎么改)

    华为屏幕指纹解锁特效怎么改(华为屏幕指纹解锁样式怎么改)

  • 华为手机单声道音频有什么用(华为手机单声道音频要开吗)

    华为手机单声道音频有什么用(华为手机单声道音频要开吗)

  • 家里搜不到无线网名字(家里搜不到wi-fi)

    家里搜不到无线网名字(家里搜不到wi-fi)

  • 微信查实名显示账户异常(微信查实名显示账号异常)

    微信查实名显示账户异常(微信查实名显示账号异常)

  • 深夜模式在哪里设置(深夜模式在哪里设置苹果)

    深夜模式在哪里设置(深夜模式在哪里设置苹果)

  • 抖音为什么点不了赞(抖音为什么点不上红心)

    抖音为什么点不了赞(抖音为什么点不上红心)

  • 屏幕黑屏导出通讯录(屏幕黑屏怎么把手机里的文件导出来)

    屏幕黑屏导出通讯录(屏幕黑屏怎么把手机里的文件导出来)

  • 苹果x卡槽怎么打开(苹果X卡槽怎么弹出来)

    苹果x卡槽怎么打开(苹果X卡槽怎么弹出来)

  • 苹果7p手写输入法在哪里设置(苹果7p手写输入不了)

    苹果7p手写输入法在哪里设置(苹果7p手写输入不了)

  • 苹果11耳机插口在哪里(苹果耳机插口线接触不良怎么办)

    苹果11耳机插口在哪里(苹果耳机插口线接触不良怎么办)

  • 探探换手机号新设备登录怎么办(探探换手机号新号怎么办)

    探探换手机号新设备登录怎么办(探探换手机号新号怎么办)

  • word2007怎么打出乘号(word里面怎么打出来)

    word2007怎么打出乘号(word里面怎么打出来)

  • 钉钉入职表转正怎么填(钉钉转正信息)

    钉钉入职表转正怎么填(钉钉转正信息)

  • 支付宝账号是手机号码吗(支付宝账号是手机号能收到钱吗)

    支付宝账号是手机号码吗(支付宝账号是手机号能收到钱吗)

  • 腾讯now直播怎么注销(腾讯Now直播怎么退款)

    腾讯now直播怎么注销(腾讯Now直播怎么退款)

  • 徕卡m10和mp240区别(徕卡m10和mp240怎么选)

    徕卡m10和mp240区别(徕卡m10和mp240怎么选)

  • beatsx怎么连接安卓

    beatsx怎么连接安卓

  • 苹果7home键不会震动了(iphone7home键没反应)

    苹果7home键不会震动了(iphone7home键没反应)

  • Semuc Champey自然公园,危地马拉 (© Joel Sharpe/Getty Images)(自然vc)

    Semuc Champey自然公园,危地马拉 (© Joel Sharpe/Getty Images)(自然vc)

  • 应纳税所得额为负数是什么意思
  • 计提印花税如何计算
  • 运输公司轮胎如何做会计分录
  • 固定资产累计折旧是什么科目
  • 万元版增值税发票最多可以开多少
  • 累计赡养老人专项扣除6000
  • 未过户的车辆对车辆影响
  • 进项转出发票是否还可以转回抵扣做分录呢?
  • 调整跨期收入是否调增值税
  • 住宿发票抵扣怎么做账
  • 高工资怎么说
  • 购买商品赠送
  • 收到单位预交卖材料款如何做会计分录?
  • 劳保用品会计科目是什么
  • 税务局代开专用发票要缴纳城建税吗?
  • 外资企业需要遵守哪些法律
  • 增值税发票专票有效期
  • 减免税款余额方法有哪些
  • 营改增后如何纳税
  • 建筑工程发票抵扣有时间限制吗
  • 财务费用的借方和贷方
  • 实际缴纳的增值税比计提的多
  • PHP:xml_parser_free()的用法_XML解析器函数
  • 如何在pc桌面上添加文件
  • win11发布时间正式确定
  • 酒店没有营业执照开业员工有责任吗
  • 笔记本保养技巧和方法
  • php动态页面实例
  • 用友预收货款账务处理
  • 闲置房的相关政策
  • 科研项目财政拨款多少
  • vue使用计算属性
  • javascript保留字有哪些
  • 预算会计的核算对象是什么
  • 企业增值税的税收优惠有哪些
  • input和printf的区别
  • 公司承担员工的社保费会计分录
  • 织梦安装详细教程
  • 投资性房地产在资产负债表中的列示
  • 增值税比对票表不通过
  • 民办非企业免税政策
  • 城建税的减免规定有哪些
  • 小微企业享受免税吗
  • 应收票据备查簿的作用
  • 建筑安装业经营范围
  • 已抵扣未申报的税额如何转出
  • 财政拨款公司的资金来源
  • 收到退回的企业所得税会计分录
  • 个体工商户是否要交税
  • 跨两年的发票可以冲红吗
  • 什么是对公账户?
  • 为什么营业成本属于费用
  • 会计要知道的常识
  • 旅行社代订机票怎么做账
  • 硬盘磁盘保护
  • windows active directory功能
  • win7如何开启VT
  • macbook os x
  • centos7编译安装内核
  • dx12不支持dx11解决办法
  • win7或win8、win8.1系统下安装ubuntu实现双系统图文教程
  • Win7 64位操作系统怎么使用DVD刻录光驱复制软件
  • windows8任务管理器在哪
  • notify.exe - notify是什么进程 有什么用
  • linux源码包
  • Win10 Mobile 14283红石预览版有哪些机型可以安装?
  • 进入linux命令行
  • linux查看使用率命令
  • webpack 主题切换
  • javascript教程完整版
  • easyui getselections
  • javascript实现2016新年版日历
  • 如何用jquery
  • jquery3.6
  • pycharm使用教程2022
  • python的get
  • 湖南历年社保缴费
  • 广西电子税务局手机版
  • 税务稽查为什么不问证人
  • 婚姻登记处婚俗改革宣传
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设