软件技术NINI 2024-09-12 14:18 采纳率: 98.4%
浏览 1
已结题

编写一个函数,该函数接收一个返回Promise的函数作为参数,以及重试次数和重试间隔(毫秒)。如果Promise被拒绝,则根据重试次数和间隔重试,直到成功或达到重试次数上限。

编写一个函数,该函数接收一个返回Promise的函数作为参数,以及重试次数和重试间隔(毫秒)。如果Promise被拒绝,则根据重试次数和间隔重试,直到成功或达到重试次数上限。

function promiseRetry(fn, retries = 3, delay = 1000) {  
  // 你的代码,可以使用递归或循环(结合setTimeout)来实现  
}  
  
// 示例使用  
function mightFail() {  
  return new Promise((resolve, reject) => {  
    // 这里简单模拟失败情况  
    reject('Failed');  
    // 实际应用中可能是异步操作,如网络请求  
  });  
}  
  
promiseRetry(mightFail, 2, 2000).then(() => {  
  console.log('Success!');  
}).catch(() => {  
  console.log('Failed after retries');  
});

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-12 17:33
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    以下是基于您的要求实现的promiseRetry函数:

    function promiseRetry(fn, retries = 3, delay = 1000) {
      return new Promise((resolve, reject) => {
        let attempt = 0; // 记录尝试次数
        const maxAttempts = retries; // 最大尝试次数
        const interval = delay; // 重试间隔
    
        const tryFn = () => {
          fn().then(resolve).catch(err => { // 执行传入的函数,如果失败则捕获错误并处理重试逻辑
            if (attempt < maxAttempts) { // 如果还未达到最大尝试次数,则进行重试
              attempt++; // 增加尝试次数
              setTimeout(() => { // 使用setTimeout进行延时,然后再次尝试
                tryFn(); // 使用递归调用自身来实现重试逻辑
              }, interval);
            } else { // 如果已经达到最大尝试次数,则返回错误
              reject(err); // 返回错误信息给Promise链的下一个环节
            }
          });
        };
    
        tryFn(); // 开始尝试执行函数
      });
    }
    

    此函数使用递归和setTimeout来重试Promise,直到成功或达到最大重试次数。您可以按照示例中的方式使用此函数,注意这是一个基础的实现,可能需要根据具体的使用场景进行一些调整和优化。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月14日
  • 已采纳回答 9月12日
  • 创建了问题 9月12日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?