当前位置:首页 > JavaScript

js实现循环定时

2026-02-02 20:30:52JavaScript

使用 setInterval 实现循环定时

// 每隔1秒执行一次
const intervalId = setInterval(() => {
  console.log('定时执行');
}, 1000);

// 清除定时器
// clearInterval(intervalId);

setInterval 会持续重复执行回调函数,直到被 clearInterval 清除。第一个参数是回调函数,第二个参数是间隔时间(毫秒)。

使用 setTimeout 模拟循环定时

function delayedLoop() {
  console.log('定时执行');
  setTimeout(delayedLoop, 1000);
}

// 启动循环
delayedLoop();

通过递归调用 setTimeout 可以实现类似 setInterval 的效果,但每次执行间隔会更准确,因为它会等待当前任务完成后再计算下一次执行时间。

js实现循环定时

使用 requestAnimationFrame 实现动画循环

function animate() {
  console.log('动画帧');
  requestAnimationFrame(animate);
}

// 启动动画循环
requestAnimationFrame(animate);

requestAnimationFrame 更适合动画场景,浏览器会在每次重绘前执行回调,通常每秒60次左右。

js实现循环定时

带条件的循环定时

let count = 0;
const maxCount = 5;

const intervalId = setInterval(() => {
  console.log(`执行第 ${++count} 次`);
  if(count >= maxCount) {
    clearInterval(intervalId);
    console.log('循环结束');
  }
}, 1000);

可以添加条件判断来终止循环,避免无限执行。

异步任务循环定时

async function asyncLoop() {
  while(true) {
    await new Promise(resolve => setTimeout(resolve, 1000));
    console.log('异步定时执行');
    // 添加退出条件
  }
}

asyncLoop();

使用 async/await 结合 Promise 可以实现包含异步操作的循环定时。

性能优化的循环定时

let lastTime = 0;
const fps = 30;
const interval = 1000 / fps;

function gameLoop(timestamp) {
  if(timestamp - lastTime >= interval) {
    lastTime = timestamp;
    console.log('游戏逻辑更新');
  }
  requestAnimationFrame(gameLoop);
}

requestAnimationFrame(gameLoop);

对于游戏等高性能要求的场景,可以结合时间戳控制实际执行频率,避免不必要的执行。

标签: js
分享给朋友:

相关文章

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…