当前位置:首页 > JavaScript

js实现定时执行

2026-03-15 21:24:29JavaScript

使用 setTimeout 实现单次延迟执行

setTimeout(() => {
  // 需要执行的代码
  console.log('延迟执行');
}, 1000); // 1000毫秒后执行

使用 setInterval 实现循环定时执行

const intervalId = setInterval(() => {
  // 需要循环执行的代码
  console.log('每隔1秒执行一次');
}, 1000);

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

使用 requestAnimationFrame 实现高性能动画定时

function animate() {
  // 动画逻辑代码
  console.log('动画帧执行');

  // 循环调用
  requestAnimationFrame(animate);
}

// 启动动画
requestAnimationFrame(animate);

使用 Promise 和 async/await 实现定时控制

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function timedExecution() {
  await delay(1000);
  console.log('1秒后执行');

  await delay(2000);
  console.log('再2秒后执行');
}

timedExecution();

使用 Web Worker 实现后台定时任务

worker.js:

let timer;
self.onmessage = function(e) {
  if (e.data === 'start') {
    timer = setInterval(() => {
      self.postMessage('tick');
    }, 1000);
  } else if (e.data === 'stop') {
    clearInterval(timer);
  }
};

主线程:

js实现定时执行

const worker = new Worker('worker.js');
worker.onmessage = (e) => {
  if (e.data === 'tick') {
    console.log('Worker定时消息');
  }
};

// 启动Worker定时器
worker.postMessage('start');

// 停止Worker定时器
// worker.postMessage('stop');

使用 Date 对象实现精确计时

function preciseTimer(callback, interval) {
  let expected = Date.now() + interval;

  function tick() {
    const drift = Date.now() - expected;
    callback();

    expected += interval;
    setTimeout(tick, Math.max(0, interval - drift));
  }

  setTimeout(tick, interval);
}

preciseTimer(() => {
  console.log('精确计时执行');
}, 1000);

标签: js
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现图片轮播

js实现图片轮播

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

js实现列表

js实现列表

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

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…