我知道setInterval( foo, n)
每隔foo
秒调用n
。
但是我怎样才能更快更快地调用它呢?就像第一次之后一样,该函数将在n-1
秒内再次调用,然后再调用n-2
秒,依此类推。
答案 0 :(得分:2)
请改用setTimeout
。它将调用具有新超时的函数,该超时将是前一个-x ms,依此类推。
我已经添加了停止条件,因此它不会永远运行。
function recall(n) {
console.log(n);
n -= 100;
n < 0 || setTimeout(function() {
recall(n);
}, n);
}
recall(1000);
&#13;
答案 1 :(得分:0)
在这种情况下,您可以递归使用setTimout
:
function foo () {
console.log(new Date());
}
function fasterAndFaster(fn, seconds) {
if (seconds <= 0) { return; }
setTimeout(function () {
fn();
// Recursive call
fasterAndFaster(fn, seconds - 1);
}, seconds * 1000);
}
fasterAndFaster(foo, 5);
console.log("Wait 5 seconds");
&#13;
答案 2 :(得分:0)
您可以将setTimeout(foo, n)
与foo.bind
结合使用,然后递归调用您的函数。