定时器

我们在第 11 章中看到了setTimeout函数。 它会在给定的毫秒数之后,调度另一个函数在稍后调用。

有时读者需要取消调度的函数。可以存储setTimeout的返回值,并将作为参数调用clearTimeout

  1. let bombTimer = setTimeout(() => {
  2. console.log("BOOM!");
  3. }, 500);
  4. if (Math.random() < 0.5) { // 50% chance
  5. console.log("Defused.");
  6. clearTimeout(bombTimer);
  7. }

函数cancelAnimationFrame作用与clearTimeout相同,使用requestAnimationFrame的返回值调用该函数,可以取消帧(假定函数还没有被调用)。

还有setIntervalclearInterval这种相似的函数,用于设置计时器,每隔一定毫秒数重复执行一次。

  1. let ticks = 0;
  2. let clock = setInterval(() => {
  3. console.log("tick", ticks++);
  4. if (ticks == 10) {
  5. clearInterval(clock);
  6. console.log("stop.");
  7. }
  8. }, 200);