javascript requestAnimationFrame vs. setTimeout

在做javascript动画时,我们常常使用的方法就是通过setTimeout调用告诉浏览器每隔20ms执行一段js代码来对dom对象执行操作,这个貌似没有什么问题,但是当深入理解计算机的fps以及浏览器渲染原理后,你会发现会有更好的方法。

强烈推荐这篇文章:

http://creativejs.com/resources/requestanimationframe/

有空我会把他翻译下

时间: 2024-12-17 02:38:30

javascript requestAnimationFrame vs. setTimeout的相关文章

Javascript定时器(二)——setTimeout与setInterval

一.解释说明 1.概述 setTimeout:在指定的延迟时间之后调用一个函数或者执行一个代码片段 setInterval:周期性地调用一个函数(function)或者执行一段代码. 2.语法 setTimeout: var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]); var timeoutID = window.setTimeout(code, delay); timeoutID 是该延时操作的数字ID,

JavaScript下的setTimeout(fn,0)意味着什么?

原文:JavaScript下的setTimeout(fn,0)意味着什么? 近期在研究异步编程的我对于setTimeout之类的东西异常敏感.在SegmentFault上看到了一个问题<关于SetTimeout时间设为0时>:提问者读了一篇文章,原文解释setTimeout延迟时间为0时会发生的事情,提问者提出了几个文章中的几个疑点.读了那篇文章之后发现原文的作者对于setTimeout的理解和自己的认知有点出入,于是编写了相关测试的代码以求答案.最终编写了这篇文章. 本文内容如下: 起因 单

Javascript中的setTimeout,setInterval,requestAnimFrame

这三种方法我们平时初学的时候可能容易混淆,下面我们将使用例子的形式来阐述这三种方法不同的用法. setTimeout:Calls a function or executes a code snippet after a specified delay.(在特定的时间后执行方法和代码块) 语法:var timeID = setTimeout(func|code,delay) <script type="text/javascript"> /*第一种写法 function f

requestAnimationFrame与setTimeout的区别

以往常常使用 setTimeout 以及 setInterval 方法来制作 JavaScript 动画,但是这种方式制作的动画经常会由于计时器的特性而带来一些问题.简单地说一下,计时器动画有以下几个问题. 间隔时间不精确,可能被阻塞.计时器的间隔指的是将回调函数推入任务队列的间隔时间,任务队列中的任务只有在主线程任务执行完毕后才会被执行. 计时器动画的间隔时间如果设定过短就会出现过度渲染占用大量资源,如果设定过长就会影响动画的流畅度.只能够估计合适的时间间隔. 多数浏览器对于计时器动画没有优化

JavaScript学习之setTimeout

<JavaScript权威指南>第四版中说“window对象方法setTimeout()用来安排一个JavaScript的代码段在将来的某个指定时间运行”. setTimeout(foo,i); // foo是回调函数,i是延时时间 注意“将来”一词,setTime会把foo函数放到队列中,当线程空闲的时候,JavaScript才会去执行队列里的事件. 看下面的代码: <!DOCTYPE HTML> <html> <head> <script type

关于JavaScript中的setTimeout()链式调用和setInterval()探索

http://www.cnblogs.com/Wenwang/archive/2012/01/06/2314283.html http://www.cnblogs.com/yangjunhua/archive/2012/04/12/2444106.html 下面的参考:http://evantre.iteye.com/blog/1718777 1.选题缘起 在知乎上瞎逛的时候看到一个自问自答的问题: 知乎上,前端开发领域有哪些值得推荐的问答?,然后在有哪些经典的 Web 前端或者 JavaScr

javascript 异步编程-setTimeout

javascript的执行引擎是单线程的,正常情况下是同步编程的模式,即是程序按照代码的顺序从上到下依次顺序执行.只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行.常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),那么在执行期间任何UI更新都会被阻塞,界面事件处理也会停止响应.导致整个页面卡在这个地方,其他任务无法执行. 特别是在for循环语句里,如果for循环的处理逻辑比较复杂,并且循环次数过多,超过1000次时,javasc

Javascript定时器(三)——setTimeout(func, 0)

setTimeout(func, 0)可以使用在很多地方,拆分循环.模拟事件捕获.页面渲染等 一.setTimeout中的delay参数为0,并不是指马上执行 <script type="text/javascript"> function delay1() { console.log('delay1'); } function delay2() { console.log('delay2'); } function delay3() { console.log('dela

Javascript 定时器篇 setTimeout和setInterval

标题定时器,让我想起了年代久远的VB,那时候也有个定时器,长的跟闹钟一样()相信跟我一样用过VB的人都不陌生.很基础的东西,但是作用却很大.记得那时候我还不太会用,忘记是用来做动画了,还是干嘛了.不过如今,已经入门编程语言了,那么就用CODE来说吧.今天我么要说的是WEB 前端技术 Javascript 的2大定时器.存活了很久,用处依旧大大大的~~~他们分别就是 setTimeout和setInterval. Javascript本身区分大小写,所以要注意 setTimeout和setInte