如何在javascript中以固定的间隔多次调用函数

How to call a function a fixed number of times after fixed intervals in javascript

本文关键字:函数 调用 javascript      更新时间:2023-09-26

我想在固定的时间间隔后调用一个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);                                    
   }
 });

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

所有的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);
});

使用setTimeout 尝试这个简单的解决方案

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 更安全