如何使用setTimeout获得定时执行速度?

时间:2014-02-25 04:15:39

标签: javascript settimeout

我尝试编写setTimeout执行的Java Script语句。我的代码将元素添加到画布。我想获得一种动画,其中一些图形元素在几秒钟之后逐个添加到画布中。

我试过了:

for (series in respuesta) {
    if (series != "x" && series != "y" && series != "raiz") {
        (function(x){
            setTimeout(function(){  plot.highlight(1,[respuesta[x].a,0])
                                    plot.highlight(1,[respuesta[x].b,0])},
                                    2500,c,x);                     
            c++;
         }(series))

    }     
}

但是我得到的只是 延迟后立即执行的所有状态 。我真的认为每个setTimeout都是循环中的一步。对于每次 n 次迭代,我会有 n 延迟。

使用jQuery或任何库有没有简单的方法呢?

3 个答案:

答案 0 :(得分:3)

您应该使用setInterval()。这在一定的时间间隔内反复重复相同的功能:

 var i = 0;
 var myItems = ["a", "b", "c"]
 var myHandle = setInterval(function() {

     // Add new items here.

     i++;

     if (i >= myItems.length) {
        clearInterval(myHandle);
     }

 }, 1000) ;

答案 1 :(得分:1)

您正在循环中设置超时。为什么不为每个循环迭代增加2500ms,使它们均匀间隔,而不是仅延迟相同的量。

var  timeout = 2500; 
for (series in respuesta) {
    if (series != "x" && series != "y" && series != "raiz") {
        (function(x){
            setTimeout(function(){  plot.highlight(1,[respuesta[x].a,0])
                                    plot.highlight(1,[respuesta[x].b,0])},
                                    timeout,c,x);                     
            c++;
            timeout += 2500;
         }(series))

    }     
}

答案 2 :(得分:0)

在jQuery中尝试setInterval()

setInterval(function() {
      // Do something every 5 seconds
}, 5000);