当前位置:首页 > JavaScript

js实现async延迟

2026-02-02 17:25:45JavaScript

使用 setTimeout 封装 Promise 实现延迟

在 JavaScript 中,可以通过 setTimeout 结合 Promise 实现异步延迟。以下是一个简单的实现方式:

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

// 使用示例
async function example() {
  console.log('开始');
  await delay(2000); // 延迟2秒
  console.log('2秒后');
}

使用 async/await 结合循环实现精确延迟

如果需要更精确的延迟控制,可以使用循环检查时间差:

async function preciseDelay(ms) {
  const start = Date.now();
  while (Date.now() - start < ms) {
    await new Promise(resolve => setTimeout(resolve, 0));
  }
}

取消延迟的功能实现

通过 AbortController 可以实现可取消的延迟:

function cancellableDelay(ms, signal) {
  return new Promise((resolve, reject) => {
    const timeout = setTimeout(resolve, ms);
    signal.addEventListener('abort', () => {
      clearTimeout(timeout);
      reject(new Error('Delay cancelled'));
    });
  });
}

// 使用示例
const controller = new AbortController();
cancellableDelay(2000, controller.signal)
  .then(() => console.log('完成'))
  .catch(e => console.log(e.message));

// 取消延迟
controller.abort();

批量延迟任务处理

对于多个需要延迟执行的任务,可以使用 Promise.all

async function batchDelays() {
  const delays = [
    delay(1000).then(() => console.log('任务1')),
    delay(1500).then(() => console.log('任务2')),
    delay(500).then(() => console.log('任务3'))
  ];

  await Promise.all(delays);
  console.log('所有延迟任务完成');
}

动态延迟时间计算

根据条件动态计算延迟时间:

js实现async延迟

async function dynamicDelay(baseMs, factor) {
  const actualDelay = baseMs * factor;
  await delay(actualDelay);
  console.log(`延迟了${actualDelay}ms`);
}

这些方法提供了不同场景下的异步延迟实现方案,可以根据具体需求选择合适的方式。

标签: jsasync
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…