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