当前位置: 首页 > news >正文

js实现一个可指定超时时间的异步函数重试机制

下面是一个示例代码,实现了一个可指定超时时间的异步函数重试机制:

function retryWithTimeout(fn, retries, timeout) {
    return new Promise((resolve, reject) => {
        const retry = async (attempt) => {
            try {
                const result = await fn();
                resolve(result);
            } catch (error) {
                if (attempt < retries) {
                    setTimeout(() => {
                        retry(attempt + 1);
                    }, timeout);
                } else {
                    reject("Exceeded maximum retries");
                }
            }
        };

        retry(0);
    });
}

// 使用示例
const asyncFunction = async () => {
    // 模拟一个可能会失败的异步操作
    if (Math.random() < 0.8) {
        return "Success!";
    } else {
        throw new Error("Failed");
    }
};

retryWithTimeout(asyncFunction, 3, 1000)
    .then(result => console.log(result))
    .catch(error => console.error(error));

在这个示例中,retryWithTimeout 函数接受三个参数:待重试的异步函数 fn、重试次数 retries 和超时时间 timeout。它会在每次调用 fn 失败时进行重试,最多重试 retries 次,并在每次重试之间等待 timeout 毫秒。

http://www.dtcms.com/a/107984.html

相关文章:

  • tomcat 目录结构组成
  • python的def
  • 计算机网络 第二章:应用层(1)
  • 结构体补充:位段
  • 我该怎么设置SVN客户端的认证信息?
  • C++ I/O 流通俗指南
  • 【卫星参数】高分二号卫星参数光谱波段_应用说明_数据来源
  • 查询条件与查询数据的ajax拼装
  • MySQL-- 函数(单行函数):数值函数, 字符串函数
  • STM32单片机入门学习——第8节: [3-4] 按键控制LED光敏传感器控制蜂鸣器
  • 深度剖析:U盘打不开难题与应对之策
  • Github 2025-03-30 php开源项目日报 Top10
  • 鸿蒙学习笔记(4)-Radio组件、弹框组件、组件内部状态、工具类
  • python数据结构——链表、栈、队列
  • 安徽京准:NTP时间同步服务器操作使用说明
  • 从数据透视到AI分析,用四层架构解决运维难题
  • 图解AUTOSAR_SWS_CANTransceiverDriver
  • Nginx基本配置文件详解
  • 自然语言处理(23:(第六章3.)​seq2seq模型的改进)
  • UG NX二次开发(C++)-采用Open/C与NXOpen获取曲线的长度
  • 网络安全的现状与防护措施
  • 网络购物谨慎使用手机免密支付功能
  • 算法日常记录
  • 敏捷开发中硬件迭代速度的瓶颈如何解决
  • 14使用按钮实现helloworld(1)
  • JP1 Systemwalker 和 unirita的A-AUTO制品对比
  • 解锁界面设计密码,打造极致用户体验
  • 【Vue2】数据绑定_MVVM模型_数据代理_事件处理
  • 手动实现一个迷你Llama:使用SentencePiece实现自己的tokenizer
  • 构造超小程序