凯发娱发k8

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

2023-08-17,,

最近开发一款小程序的时候想到一个问题,如果接口突然挂掉怎么办呢,于是乎想到一个解决办法.接口请求重试功能.并限制请求次数
用最新的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等...

接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数的相关教程结束。

网站地图