setTimeout延时0毫秒的作用
wizardpisces经验: 这几天做web动画,用到css3的animation,为了对一个存在的元素触发动画,可以通过添加className,可是只能触发一次,为了触发多次我尝试了先删除className后直接添加的方法,失败了,最后我通过删除和创建元素得以实现再添加className得以实现,看完这篇文章,通过 先删除元素className再setTimeout(添加元素的className,时间),得以实现多次触发效果,不过最后的原理还是有点模糊,如果各位有新颖的见解,希望不吝赐教。2014/7/25号BOSS说setTimeout会被线程放在堆栈底,与这篇文章解释有所差异。setTimeout好像有种强制重绘的能力 原文: 经常看到 setTimeout 延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用,可能还有作用我还不知道,希望得知的朋友在后面评论上不吝指出。 1、实现javascript的异步; 正常情况下javascript都是按照顺序执行的。但是我们可能让该语句后面的语句执行完再执行本身,这时就可以用到setTimeout延时0ms来实现了。 如: alert(1); setTimeout("alert(2)", 0); alert(3); 虽然延时了0ms,但是执行顺序为:1,3