当前位置:首页 > JavaScript

js实现暂停代码

2026-03-16 08:27:07JavaScript

使用 setTimeoutclearTimeout

通过 setTimeout 设置延迟执行,配合 clearTimeout 取消执行,可以实现暂停效果。定义一个变量存储计时器 ID,调用 clearTimeout 即可暂停。

let timerId;

function startTask() {
  timerId = setTimeout(() => {
    console.log("Task executed");
  }, 3000);
}

function pauseTask() {
  clearTimeout(timerId);
}

使用 Promiseasync/await

通过 Promiseasync/await 结合,可以更灵活地控制代码暂停。创建一个可解析的 Promise,在需要暂停时通过外部控制决定何时继续。

let resume;
const pausePromise = new Promise(resolve => {
  resume = resolve;
});

async function runTask() {
  console.log("Task started");
  await pausePromise; // 暂停点
  console.log("Task resumed");
}

// 调用 resume() 恢复执行
function resumeTask() {
  resume();
}

使用 Generator 函数

Generator 函数通过 yield 关键字暂停执行,调用 next() 方法恢复执行。适合需要分步控制的场景。

function* taskGenerator() {
  console.log("Step 1");
  yield;
  console.log("Step 2");
}

const task = taskGenerator();
task.next(); // 执行到第一个 yield 暂停
task.next(); // 恢复执行到结束

使用 requestAnimationFrame

对于动画或高频任务,通过 requestAnimationFramecancelAnimationFrame 实现暂停。存储帧 ID 后取消即可暂停。

let animationId;

function animate() {
  console.log("Animating...");
  animationId = requestAnimationFrame(animate);
}

function pauseAnimation() {
  cancelAnimationFrame(animationId);
}

使用 AbortController

现代浏览器支持 AbortController,可中断 fetch 或异步任务。通过 signal 触发中止实现暂停。

const controller = new AbortController();

async function fetchData() {
  try {
    const response = await fetch("url", { signal: controller.signal });
    console.log(await response.json());
  } catch (e) {
    if (e.name === "AbortError") {
      console.log("Fetch paused");
    }
  }
}

function pauseFetch() {
  controller.abort();
}

使用 Worker 线程

在 Web Worker 中运行耗时任务,通过 terminate() 暂停或销毁 Worker。重新创建 Worker 可恢复执行。

js实现暂停代码

let worker = new Worker("task.js");

function pauseWorker() {
  worker.terminate();
}

每种方法适用于不同场景,根据需求选择最合适的实现方式。

标签: 代码js
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

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

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js分页实现

js分页实现

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

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…