requestAnimationFrame与setInterval都可以实现循环触发事件,但是setInterval是基于时间的,而requestAnimationFrame是基于帧数的,在我的一次开发弹幕的项目中,在一开始使用了setInterval来切换弹幕的位置,起初并没有什么问题,但是当浏览器切换回后台后,就会出现弹幕积攒过多的原因,因为我随不断的创建新的弹幕进行移动(为了考虑性能,会优先使用已经被废弃的弹幕盒),当浏览器切换到后台后,浏览器本身已经不进行页面渲染了,而我的定时器却在不断的创建新的弹幕以用来发射,当用户将浏览器切换到前台时候,会看到在一段时间内积攒的弹幕堆积到一起,最后发现是因为 浏览器在后台的时候 定时器还是会不断的跑的,但是在当前这种情况下 我可能并不是很希望弹幕系统继续运行下去,我希望知道浏览器当前状态是在前台还是后台,如果是后台的话 则暂停弹幕,然而在微信中并没有看到相关的机制,后来看到了requestAnimationFrame,requestAnimationFrame也是不断的循环执行事件,但是他是按帧执行的,而且有一个好处是 当浏览器切换到后台后,requestAnimationFrame是不会再去执行事件了。这和setInterval有着本质的差异。而requestAnimationFrame之所以在浏览器进入后台不去执行的原因 ,应该是和浏览器进入后台后不去渲染界面有关,因为渲染界面后需要逐帧绘制,当不进行页面的选然后,也就没必要去执行帧操作了,所以requestAnimationFrame也不会去执行了

如果上述推论是正确的,那可以基此判断出setTimeout在浏览器进入后台后依然会运行,就像setInterval一样

转载于:https://www.cnblogs.com/mrzhu/p/9300406.html

关于requestAnimationFrame与setInterval的一点差异相关推荐

  1. 用requestAnimationFrame替代setInterval制作匀速动画

    代码之前的介绍来自于这里requestAnimation介绍 了解过事件循环机制的朋友应该知道,siteTimeout和setInterval并不是精准的时间间隔,他们要等待其他优先的执行队列执行完成 ...

  2. vue使用优化后的动画级别的定时器 requestAnimationFrame 比setInterval, setTimeout效果要高很多

    vue使用优化后的动画级别的定时器 requestAnimationFrame 比setInterval, setTimeout效果要高很多 概述 默认情况下,requestAnimationFram ...

  3. javascript中正则表达式和ruby中的一点差异

    看到一个例子,不过这个例子中正则表达式的格式貌似是错的: Function.prototype.get_name = function(){return this.name || this.toStr ...

  4. DuplicateHandle在win10和xp下的一点差异

    原来有个程序,需要使用DuplicateHandle,在xp下 if(DuplicateHandle(hProcess, toDuplicate,GetCurrentProcess(), &h ...

  5. 动画requestAnimationFrame

    前言 在研究canvas的2D pixi.js库的时候,其动画的刷新都用requestAnimationFrame替代了setTimeout 或 setInterval 但是jQuery中还是采用了s ...

  6. python2与python3性能对比_对Python2与Python3中__bool__方法的差异详解

    对Python2与Python3中__bool__方法的差异详解 发布时间:2020-08-28 00:08:58 来源:脚本之家 阅读:74 作者:grey_csdn 学习Python面向对象编程的 ...

  7. 嵌入式_常见延时方式的差异与选择(for循环延时、定时器延时、汇编延时....)

    嵌入式_常见延时方式的差异与选择(for循环延时.定时器延时.汇编延时-) 这里整理几种常见的延时方式,并做简单测试供大家参考,如果有什么不对的地方,欢迎指正,共同探讨. 文章目录 嵌入式_常见延时方 ...

  8. HTML及css疑问解答题前端面试题

    1. 什么是盒模型 盒模型 margin(外边距)- 清除边框外的区域,外边距是透明的. border(边框)- 围绕在内边距和内容外的边框. padding(内边距)- 清除内容周围的区域,内边距是 ...

  9. 聊聊使用 JavaScript 做动画出现卡顿的原因

    前段时间在使用 JavaScript 做动画的时候发现做出来的动画会出现卡顿的现象,今天我们主要就来聊一下卡顿的原因以及如何解决这个问题. 使用定时器实现动画出现卡顿的原因 主要原因是浏览器无法确定定 ...

最新文章

  1. linux 环境 下面 yum 安装nginx
  2. 【星球知识卡片】深度学习图像降噪有哪些关键技术点,如何学习
  3. 1.Android(了解Android王国)
  4. 解决Extjs中Combobox显示值和真实值赋值问题
  5. NHibernate之旅(7):初探NHibernate中的并发控制
  6. eclipse调试debug时出现source not found
  7. 操作系统实验_Chcore -- 上交IPADS操作系统银杏书配套Lab实验笔记 - Lab2内存管理(一)...
  8. 使用备份和还原以及SMB协议将SQL数据库从Windows迁移到Linux
  9. asp.net验证空间详说
  10. 独家!337页大数据与建模核心资料,免费领取!
  11. 6)Thymelead th:with 局部变量 与 属性优先级 和 Thymeleaf 注释
  12. linux变量接收命令返回值,linux shell自定义函数(定义、返回值、变量作用域)介绍...
  13. diskgenius创建efi分区_怎么创建efi系统分区?efi系统分区创建教程
  14. 百度网盘链接在线解析网站_利用在线服务下载百度网盘的文件
  15. 线性代数应用于计算机科学例子,Sagemath在线性代数教学中的应用
  16. CSDN如何上传照片
  17. 混沌工程(Chaos Engineering) 总结
  18. 一个好玩的c++小游戏 另外一个是木马病毒
  19. 读书笔记-架构整洁之道有感
  20. java基础-File类与IO流

热门文章

  1. 中国人工智能学会通讯——搜狗搜索:从搜索到问答 1.1 引言
  2. 微软回应 CIA 漏洞攻击 Win10 问题:正在研究维基解密报告
  3. Tomcat介绍及性能优化
  4. 45种Javascript技巧大全
  5. typescript 中 let和var的区别
  6. 开源分布式中间件 DBLE Schema.xml 配置解析
  7. less background url相对路径取不到编译报错问题
  8. 禁止冒名顶替Exchange用户发送邮件
  9. Object_Type列表
  10. [导入]OpenSceneGraph编译指导