当前位置:首页 > JavaScript

js实现settime

2026-03-14 17:13:41JavaScript

setTimeout 的基本用法

setTimeout 是 JavaScript 中用于延迟执行代码的方法,接受一个回调函数和延迟时间(毫秒)。基本语法如下:

setTimeout(() => {
  console.log('这段代码将在延迟后执行');
}, 1000); // 延迟1秒

清除定时器

setTimeout 返回一个定时器 ID,可用于取消尚未执行的延迟操作。使用 clearTimeout 清除:

const timerId = setTimeout(() => {
  console.log('这段代码不会执行');
}, 1000);

clearTimeout(timerId);

传递参数给回调函数

从第三个参数开始,可以传递额外的参数给回调函数:

js实现settime

setTimeout((arg1, arg2) => {
  console.log(arg1, arg2); // 输出: Hello World
}, 1000, 'Hello', 'World');

替代 this 绑定

箭头函数自动绑定当前作用域的 this,普通函数需注意 this 指向问题:

const obj = {
  value: 'test',
  printValue: function() {
    setTimeout(() => {
      console.log(this.value); // 输出: test
    }, 1000);
  }
};
obj.printValue();

与 Promise 结合

可以将 setTimeout 封装为 Promise,便于异步流程控制:

js实现settime

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

delay(1000).then(() => {
  console.log('1秒后执行');
});

递归实现周期性任务

通过递归调用 setTimeout 可模拟周期性任务,比 setInterval 更可控:

function repeat(interval) {
  setTimeout(() => {
    console.log('周期性任务');
    repeat(interval);
  }, interval);
}
repeat(1000);

性能优化

避免频繁创建短间隔定时器,可能导致性能问题。建议合并操作或使用 requestAnimationFrame 处理动画场景。

注意事项

  • 延迟时间是最小保证时间,实际执行可能因主线程繁忙而延后
  • Node.js 环境下 setTimeout 的延迟上限为 24.8 天(2^31-1 毫秒)
  • 浏览器标签处于后台时,部分浏览器会降低定时器精度

标签: jssettime
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…