加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

界说 retryAdapterEnhancer 函数

发布时间:2021-05-30 10:06:21 所属栏目:教程 来源:互联网
导读:为了让用户能够更灵活地控制请求重试的功能,我们定义了一个 retryAdapterEnhancer函数,该函数支持两个参数: adapter:预增强的 Axios 适配器对象; options:

为了让用户能够更灵活地控制请求重试的功能,我们定义了一个 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(); 

  }; 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!