首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >超时时间的异步函数重试机制

超时时间的异步函数重试机制

作者头像
贺公子之数据科学与艺术
发布2025-08-29 16:16:59
发布2025-08-29 16:16:59
12200
代码可运行
举报
运行总次数:0
代码可运行
一个基于Promise的实现异步函数重试机制的代码,其中可以指定超时时间:
代码语言:javascript
代码运行次数:0
运行
复制
function asyncFunction() {
  return new Promise((resolve, reject) => {
    // 模拟一个异步操作,比如调用网络请求
    setTimeout(() => {
      const success = Math.random() < 0.5; // 模拟异步操作的成功或失败
      if (success) {
        resolve('Async operation completed successfully');
      } else {
        reject(new Error('Async operation failed'));
      }
    }, 1000);
  });
}

function retryAsyncFunction(maxRetries, timeout) {
  return new Promise((resolve, reject) => {
    let retries = 0;

    function attempt() {
      asyncFunction()
        .then((result) => {
          resolve(result);
        })
        .catch((error) => {
          retries++;
          if (retries >= maxRetries) {
            reject(error);
          } else {
            setTimeout(attempt, timeout);
          }
        });
    }

    attempt();
  });
}

// 使用示例
retryAsyncFunction(3, 2000)
  .then((result) => {
    console.log(result);
  })
  .catch((error) => {
    console.error(error);
  });

在上述代码中,retryAsyncFunction函数接受两个参数:maxRetries指定最大重试次数,timeout指定每次重试之间的间隔时间。在每次重试时,会调用asyncFunction进行异步操作,如果成功则返回结果,如果失败则根据重试次数和最大重试次数判断是否继续重试。如果达到最大重试次数,则会将最终的失败原因进行拒绝,否则会等待一段时间(timeout),然后再次进行重试。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一个基于Promise的实现异步函数重试机制的代码,其中可以指定超时时间:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档