当前位置:首页 > 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 的效果,但每次执行间隔会更准确,因为它会等待当前任务完成后再计算下一次执行时间。

使用 requestAnimationFrame 实现动画循环

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

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

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

带条件的循环定时

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实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url,…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…