delay(和setTimeout()的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delay(和setTimeout()的区别相关的知识,希望对你有一定的参考价值。

近来几日在写游戏代码时,频繁会用到定时器,偶尔想到有个.delay()方法,用了几次发现两者效果相差很大,遂就仔细考究了一下两者的区别!

 

1. setTimeout函数是从页面开始的时候计算time的

 

2. JQuery提供的delay函数,如果已经对某一个元素调用用.delay(time)的话,那么如果你在程序后面再次调用.delay(time2),那么这个元素的第二次delay后的执行操作的时间就是从time + time2。

 

在控制动画链的执行顺序的时候如果用记录delay时间来控制,后续对同个元素进行操作的时候就会出现计算时间不容易的情况。比如:

先控制一组div按顺序fadeIn,然后第二组div按序fadeIn,两组的元素个数不一定相同。

然后又要对第一组里的div按序animate。这样的情况用delay就比较麻烦,用setTimeout就容易控制的多,只要对每次的delay增加就是了。

 

setTimeout函数还有个问题就是在循环里如果使用到了循环里的参数的话,会出现每次循环的setTimeout函数的参数都是同个值。

这里有说明http://yeak2001.iteye.com/blog/430522

 

有个办法就是再分装一个函数

如这里提到的,再写一个doSettimeout(i)函数,用i来传参就不会出现这个问题了。

这里有写→http://stackoverflow.com/questions/5226285/settimeout-in-a-for-loop-and-pass-i-as-value

以上是关于delay(和setTimeout()的区别的主要内容,如果未能解决你的问题,请参考以下文章

重写setTimeout

js中定时器setTimeout函数的问题?

JS实现停留几秒sleep,Js中for循环的阻塞机制,setTimeout延迟执行

有关定时器setTimeout()setInterval()详解

javascript之调度:setTimeout 和 setInterval

latency和delay区别