当前位置:首页 > 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);

传递参数给回调函数

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

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,便于异步流程控制:

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 处理动画场景。

js实现settime

注意事项

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

标签: jssettime
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

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

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…