当前位置:首页 > JavaScript

js实现暂停

2026-04-06 16:26:08JavaScript

实现暂停功能的方法

在JavaScript中实现暂停功能通常涉及异步编程或定时器的控制。以下是几种常见场景的实现方式:

使用Promise和setTimeout实现异步暂停

通过Promise封装setTimeout,结合async/await语法实现可读性强的暂停:

js实现暂停

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

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

通过Generator函数控制执行流程

利用yield关键字暂停Generator函数的执行:

function* pausedFunction() {
  console.log('步骤1');
  yield; // 暂停点
  console.log('步骤2');
}

const gen = pausedFunction();
gen.next(); // 执行到第一个yield
// 手动调用gen.next()继续执行

清除定时器实现强制暂停

对于setInterval/setTimeout的场景,通过清除定时器ID实现暂停:

js实现暂停

let timerId;

function startInterval() {
  timerId = setInterval(() => console.log('tick'), 1000);
}

function pauseInterval() {
  clearInterval(timerId);
}

使用AbortController控制异步操作

现代浏览器支持通过AbortSignal中断fetch请求等异步操作:

const controller = new AbortController();

fetch(url, { signal: controller.signal })
  .catch(err => {
    if (err.name === 'AbortError') {
      console.log('请求已中止');
    }
  });

// 需要暂停时调用
controller.abort();

基于Date对象的同步等待(不推荐)

注意:这会阻塞主线程,仅适用于特殊场景:

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

注意事项

  • 浏览器环境避免使用同步暂停,会导致页面冻结
  • Node.js环境可使用util.promisify(setTimeout)简化Promise封装
  • 复杂流程建议使用状态机管理暂停/恢复逻辑
  • Web Worker中可通过postMessage实现线程间暂停控制

标签: js
分享给朋友:

相关文章

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现抽奖

js实现抽奖

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

js实现变形

js实现变形

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…