我希望在固定的时间间隔之后将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);
}
});
我的代码有什么问题,请提供解决方案。
答案 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
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);
});
我认为,使用setTimeout
比setInterval