如何在javascript中固定间隔后调用一个固定次数的函数

时间:2013-12-12 15:46:42

标签: javascript d3.js

我希望在固定的时间间隔之后将on事件函数调用固定次数。

无效的代码示例

function work(i){
   remove();
   draw(i);          
 } 

d3.select("body").select('button').on('click', function() {
 for(var i=0;i<7;i++){
   setTimeout(function(i){
     remove();
     draw(i);
    },1500);                                    
   }
 });

我的代码有什么问题,请提供解决方案。

2 个答案:

答案 0 :(得分:1)

所有setTimeout次呼叫都是在循环中紧接着进行的,并且不要等待彼此完成。您可以使用setInterval来实现您需要的功能:

function work(i) {
   remove();
   draw(i);          
} 

d3.select("body").select('button').on('click', function () {
    work(0);
    var times = 1,
        myInterval = setInterval(function () {
            work(times);
            times++;
            if (times === 7) {
                clearInterval(myInterval);
            }
        }, 1500);
});

答案 1 :(得分:0)

使用setTimeout

尝试这个简单的soln
function work(i){
   remove();
   draw(i); 
   if(i<=7){//set your condition
    setTimeout(function(i){
      i++;
      work(i);
    },1500); 
   }         
 } 

d3.select("body").select('button').on('click', function() {
  work(0);
});

我认为,使用setTimeoutsetInterval

更安全