当前位置:首页 > 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实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

js实现截图

js实现截图

使用HTML2Canvas库实现截图 HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式: npm install html2canv…