JS - 连续几个setTimeout?

时间:2016-05-09 22:59:26

标签: javascript settimeout

只需跟进this thread

我正在使用以下代码上下移动图片:

icon.style.top = top-50 + "px";
setTimeout ( function() { icon.style.top = top + "px"; }, 200) ;

现在我想实施更多中间职位。这个想法是为了诱导翻译效果。我试图堆叠setTimeout行,但没有工作。

我现在正在阅读有关clearTimeout的一些内容,但可能你的帮助会让它更好用。谢谢!

1 个答案:

答案 0 :(得分:2)

如果需要,您可以“堆叠”setTimeout调用。请记住,它们立即被称为 ,并且仅在给定的毫秒参数后执行操作。

因此,如果我希望在彼此200毫秒内发生三次回调,则使用200作为参数是不正确的。第一个应该是200,然后是400,然后是600 - 或者将i * 200分解为i,其中var offsets = [-50,50,0,-100,100,0]; //some set of pixel offsets var timing = 200; //the 200 millisecond argument for(var i = 0; i < offsets.length; i++){ //loop through offsets with i (function(i){ //close over the i value to ensure the value is saved setTimeout( function() { //setup the timeout icon.style.top = (top+offsets[i]) + "px"; //change the style offset }, timing*i); //multiply the 200 milliseconds by loop counter })(i) //close over the i value } 是迭代器。

10 = 1010b
100 = 1100100b
1000 = 1111101000b