站长网 教程 界说 retryAdapterEnhancer 函数

界说 retryAdapterEnhancer 函数

为了让用户能够更灵活地控制请求重试的功能,我们定义了一个 retryAdapterEnhancer函数,该函数支持两个参数: adapter:预增强的 Axios 适配器对象; options:缓存配置对象,该对象支持 2 个属性,分别用于配置不同的功能: times:全局设置请求重试的次

为了让用户能够更灵活地控制请求重试的功能,我们定义了一个 retryAdapterEnhancer函数,该函数支持两个参数:

adapter:预增强的 Axios 适配器对象;

options:缓存配置对象,该对象支持 2 个属性,分别用于配置不同的功能:

times:全局设置请求重试的次数;

delay:全局设置请求延迟的时间,单位是 ms。

了解完 retryAdapterEnhancer 函数的参数之后,我们来看一下该函数的具体实现:

function retryAdapterEnhancer(adapter, options) { 

  const { times = 0, delay = 300 } = options; 

 

  return async (config) => { 

    const { retryTimes = times, retryDelay = delay } = config; 

    let __retryCount = 0; 

    const request = async () => { 

      try { 

        return await adapter(config); 

      } catch (err) { 

        // 判断是否进行重试 

        if (!retryTimes || __retryCount >= retryTimes) { 

          return Promise.reject(err); 

        } 

        __retryCount++; // 增加重试次数 

        // 延时处理 

        const delay = new Promise((resolve) => { 

          setTimeout(() => { 

            resolve(); 

          }, retryDelay); 

         }); 

         // 重新发起请求 

         return delay.then(() => { 

           return request(); 

         }); 

        } 

      }; 

   return request(); 

  }; 

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/video/2021/0528/7277.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部