博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数
阅读量:4881 次
发布时间:2019-06-11

本文共 1228 字,大约阅读时间需要 4 分钟。

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

转载于:https://www.cnblogs.com/chengfeng6/p/10686097.html

你可能感兴趣的文章
jsp基础速成精华讲解
查看>>
URL to Blob
查看>>
bzoj 3643: Phi的反函数
查看>>
BizTalk Server 2009 Beta初体验
查看>>
HTML中解决双击会选中文本的问题
查看>>
3.单例模式-singleton
查看>>
说说Vue.js的v-for
查看>>
Java第四次作业
查看>>
屏幕录像软件 (Desktop Screen Recorder)
查看>>
【codevs1069】关押罪犯
查看>>
iOS 设计模式之单例
查看>>
POJ 1664 放苹果
查看>>
Pthon3各平台的安装
查看>>
python编程快速上手之第11章实践项目参考答案(11.11.3)
查看>>
JS 之CLASS类应用
查看>>
一个tga工具
查看>>
64bit CPU 知识 (IA32,IA64,EM64T,AMD64)
查看>>
结构体 枚举
查看>>
srtlen实现以及与sizeof的比较
查看>>
linux+win7双系统重装win7修复grub的办法
查看>>