在javascript中,如何在固定的时间间隔后调用固定次数的函数
我想在固定的时间间隔后,以固定的次数调用on-event函数 不工作的代码示例在javascript中,如何在固定的时间间隔后调用固定次数的函数,javascript,d3.js,Javascript,D3.js,我想在固定的时间间隔后,以固定的次数调用on-event函数 不工作的代码示例 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
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);
}
});
功能工作(一){
删除();
抽签(i);
}
d3.选择(“主体”)。选择(“按钮”)。打开(“单击”,功能)(){
对于(var i=0;i所有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);
});
功能工作(一){
删除();
抽签(i);
如果(i)它怎么不工作?或者您可以将超时设置为1500*(i+1)
@LarsKotthoff运行多个并发的设置超时
或单个设置间隔
?在setTimeout中的函数在1.5秒后运行之前,for循环如何开始下一次迭代?@user3074097您的意思是需要删除();绘制(次);
立即调用函数,而不是让函数等待1.5秒?如果是这样,我将更新我的答案?@Jonathan我不认为同时运行多个函数会更昂贵。也就是说,我没有对其进行测量,7年来,它肯定不会在实践中产生可测量的差异。