• 接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数


    最近开发一款小程序的时候想到一个问题,如果接口突然挂掉怎么办呢,于是乎想到一个解决办法.接口请求重试功能.并限制请求次数
    用最新的async函数语法实现.代码简洁明了.
    测试代码如下:
    function foo(param) {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          try {
            JSON.parse('{{'); // 执行到这里会报错
            return resolve(param);
          } catch (err) {
            return reject(err);
          }
        }, 1000);
      });
    }
      /**
      * 接口请求重试
      * @param {num} retryMax 请求次数
      */
    async function autoRetry(retryMax) {
      try {
        if (retryMax <= 0) {
          return 'error';
        }
        let res = await foo(1)
        return res;
      } catch (error) {
        return autoRetry(retryMax - 1);
      }
    }
    autoRetry(3)
      .then(result => {
        console.log('result', result.data);
      })
      .catch(err => {
        console.log('err', err);
      });
    

     foo函数是用来模拟请求的,返回promise对象
    正式用法如下:

    const axios = require('axios');
    /**
     * 接口请求重试
     * @param {num} retryMax  请求次数
     */
    async function autoRetry(retryMax) {
      try {
        if (retryMax <= 0) {
          return 'error';
        }
        let res = await axios.get('http://dfsports_h5.dftoutiao.com/dfsports_h5/newspool?type=nba&typecode=900047&pgnum=1')
        return res;
      } catch (error) {
        return autoRetry(retryMax - 1);
      }
    }
    

     await axios.get()这个方法还可以封装一下,用参数传递,可以应对不同的请求方法.
    也可以引入node-retry ,
    retry等...

  • 相关阅读:
    背景图
    PKUWC 2019~2020 游记
    前置内容2:复杂度分析
    前置内容1:算法与数据结构
    莫比乌斯反演学习笔记2
    莫比乌斯反演学习笔记1
    CSP-J&S-2019 游记
    最近面试的一些感触
    算法学习-整数反转
    入行九年,入园8年,突然想写一点东西.
  • 原文地址:https://www.cnblogs.com/chengfeng6/p/10686097.html
Copyright © 2020-2023  润新知