当前位置:首页 > JavaScript

js 实现暂停

2026-02-01 17:19:58JavaScript

实现 JavaScript 暂停功能的方法

在 JavaScript 中实现暂停功能通常需要模拟同步等待的效果,因为 JavaScript 是单线程语言,直接使用 sleep 会阻塞整个线程。以下是几种常见的方法:

使用 setTimeout 实现异步暂停

通过 setTimeout 可以实现非阻塞的延迟执行:

js 实现暂停

function pause(milliseconds) {
  return new Promise(resolve => setTimeout(resolve, milliseconds));
}

async function run() {
  console.log('开始');
  await pause(2000); // 暂停2秒
  console.log('结束');
}
run();

使用 Promiseasync/await

结合 Promiseasync/await 可以更优雅地实现暂停:

js 实现暂停

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

async function example() {
  console.log('第一步');
  await delay(1000);
  console.log('第二步');
}
example();

使用循环模拟同步暂停(不推荐)

这种方法会阻塞主线程,可能导致页面无响应:

function sleep(ms) {
  const start = Date.now();
  while (Date.now() - start < ms) {}
}

console.log('开始');
sleep(3000); // 暂停3秒
console.log('结束');

使用 Generator 函数

通过 Generator 函数可以实现更复杂的暂停逻辑:

function* pausedExecution() {
  console.log('第一步');
  yield new Promise(resolve => setTimeout(resolve, 1000));
  console.log('第二步');
}

const generator = pausedExecution();
generator.next().value.then(() => generator.next());

注意事项

  • 避免在主线程中使用同步暂停方法,这会冻结页面。
  • 在 Node.js 环境中可以使用 util.promisifysetTimeout 结合。
  • 现代浏览器和 Node.js 都支持 async/await,推荐优先使用这种方法。

标签: js
分享给朋友:

相关文章

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现列表

js实现列表

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

js实现防洪

js实现防洪

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

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现删除

js实现删除

使用 splice 方法删除数组元素 splice 方法可以删除数组中的元素,并返回被删除的元素。它接受两个参数:起始索引和要删除的元素数量。 const array = [1, 2, 3, 4…

js实现复制功能实现

js实现复制功能实现

使用document.execCommand方法(传统方式,已逐渐被弃用) 传统方式通过document.execCommand('copy')实现复制功能,需先选中文本。以下是一个完整示例: fu…