比setTimeout()更有效的方法
More efficient way other than setTimeout()
setTimeout()
中给出的时间延迟对Windows和Ubuntu的工作方式不同?
为什么?
有更好的方法吗?
setTimeout()给出的时间不能保证。
有以下几个原因:
- JavaScript的eventQueue系统
- 定时器精度取决于操作系统和/或浏览器(介于1ms和20ms之间)
我写了一篇关于JavaScript时间的博文在
http://www.codebullets.com/is -时间-相对javascript - 1365关于本主题
更好的方法是什么?
这取决于你想做什么。也看看RequestAnimationFrame (http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/),也许这是为你。
requestAnimationFrame
将触发每个监视器VBLANK间隙,如果在下一个VBLANK之前请求。
这样它就是一个非常精确的计时器。然而,它每秒最多触发60次,如果你在需要再次调用它之前花费超过16.7毫秒的时间预算,它就不会非常准确。
如果你的函数在这个时间预算内运行,requestAnimationFrame
将是最准确的,你可以从Javascript访问。
它的触发方式几乎与setTimeout
相同:
function myLoop() {
//... < 16.7ms to finish work...
requestAnimationFrame(myLoop);
}
注意:你将需要使用前缀在某些浏览器或polyfill(见克里斯的回答链接)。
相关文章:
- 在jQuery中创建向下滑动子菜单的最有效方法
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 选择具有值数组的所有元素的最有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- 将javascript数组中的项移动到特定位置的有效方法
- 将JS对象数组转换为嵌套形式的最有效方法
- 隐藏具有特定类$.each、for等的元素的有效方法
- 什么's是调用具有可变参数的函数的有效方法
- 选择具有特定数据的所有 html 标记的最有效方法是什么 - [适当性],无论值如何
- 使用 jQuery 调用 PHP 端点的最有效方法
- 这是解析 Int 的有效方法吗?
- 在JavaScript中搜索数组映射的最有效方法
- 获取字符串中最后一个换行符的最有效方法是什么
- 什么's是在两个(或多个)阵列中找到匹配的细胞序列的最有效方法
- 什么's是在IE8+中添加元素的最有效方法
- 从任何jquery选择器字符串创建元素的最有效方法
- 在日期范围内查找丢失日期的最有效方法是什么
- 对区间[1,10^12]中的整数进行编码/解码的快速有效方法是什么
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 在ASP.NET中使用JQuery UI自动完成的有效方法