当前位置:首页 > JavaScript

js异步实现暂停

2026-04-07 07:09:32JavaScript

异步暂停的实现方法

在JavaScript中实现异步操作的暂停功能,可以通过以下几种方式实现:

Promise与async/await结合

使用async/await语法可以更直观地控制异步流程的暂停。通过返回一个在指定时间后resolve的Promise来实现暂停效果。

js异步实现暂停

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

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

Generator函数

通过Generator函数的yield关键字可以实现执行流程的暂停和恢复。

js异步实现暂停

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

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

AbortController

现代浏览器支持的AbortController可以用于中断异步操作。

const controller = new AbortController();

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

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

手动控制状态

通过标志变量手动控制异步流程的暂停和继续。

let isPaused = false;

async function controllableTask() {
  while(true) {
    if(isPaused) {
      await new Promise(resolve => {
        const check = () => {
          if(!isPaused) resolve();
          else setTimeout(check, 100);
        };
        check();
      });
    }
    // 正常业务逻辑
  }
}

每种方法适用于不同场景,Promise方案适合简单延迟,Generator适合复杂流程控制,AbortController适合需要取消的场景,手动控制则提供了最大灵活性。

标签: js
分享给朋友:

相关文章

js实现路由

js实现路由

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

js实现上传文件

js实现上传文件

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

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现删除

js实现删除

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

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…

vue js实现弹窗

vue js实现弹窗

Vue.js 实现弹窗的方法 使用组件实现弹窗 创建一个独立的弹窗组件,例如 Modal.vue,包含弹窗的 HTML 结构和样式。在组件中定义 props 控制弹窗的显示与隐藏。 <temp…