Skip to content

请在不使用 setTimeout 的前提下,实现 setInterval

Posted on:2024年9月19日 at 01:40

可以通过递归调用函数来实现 setInterval,而不使用 setTimeout

下面是一个简单的实现示例:

function mySetInterval(callback, interval) {
  let start = Date.now();

  function loop() {
    const now = Date.now();
    const elapsed = now - start;

    if (elapsed >= interval) {
      callback(); // 执行回调函数
      start = Date.now(); // 重置开始时间
    }

    requestAnimationFrame(loop); // 请求下一帧
  }

  loop(); // 启动循环
}

// 使用示例
mySetInterval(() => {
  console.log("Hello, World!");
}, 1000);

解释

原文转自:https://fe.ecool.fun/topic/bed3cfa0-30ee-43ca-905d-a9f0c13f0468