当前位置:首页 > 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实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

使用js实现

使用js实现

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

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…