我一直在研究这个,我什么也没想到。基本上,我正在尝试编写一个调用函数3次的数据收集程序,在每次调用之间等待10秒。但是,我能找到的只是"如何每隔x秒调用一个函数y秒",它并没有完全解决我的问题,因为它可能需要超过几秒才能完成所有三个调用。我知道我将不得不使用setInterval和clearIntervals,但我不知道如何格式化循环。
答案 0 :(得分:11)
使用setInterval并在每次运行时保留一个计数器,然后清除计数变得足够大的时间间隔。
(function() {
var c = 0;
var timeout = setInterval(function() {
//do thing
c++;
if (c > 2) {
clearInterval(timeout);
}
}, 10000);
})();
答案 1 :(得分:9)
使用setTimeout
:
function callNTimes(n, time, fn) {
function callFn() {
if (--n < 0) return;
fn();
setTimeout(callFn, time);
}
setTimeout(callFn, time);
}
然后您可以使用该功能设置计算的迭代次数:
callNTimes(3, 10000, function() { /* whatever */ });