当前位置:首页 > 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('所有延迟任务完成');
}

动态延迟时间计算

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

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

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

js实现async延迟

标签: jsasync
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Jav…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…