延时后调用功能然后更快

时间:2017-06-06 19:09:48

标签: javascript setinterval

我知道setInterval( foo, n)每隔foo秒调用n。 但是我怎样才能更快更快地调用它呢?就像第一次之后一样,该函数将在n-1秒内再次调用,然后再调用n-2秒,依此类推。

3 个答案:

答案 0 :(得分:2)

请改用setTimeout。它将调用具有新超时的函数,该超时将是前一个-x ms,依此类推。 我已经添加了停止条件,因此它不会永远运行。



function recall(n) {
  console.log(n);
  
  n -= 100;
  
  n < 0 || setTimeout(function() {
    recall(n);
  }, n);
}

recall(1000);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

在这种情况下,您可以递归使用setTimout

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:0)

您可以将setTimeout(foo, n)foo.bind结合使用,然后递归调用您的函数。

Example