Javascript 如何使用axios客户端重试5xx错误

Javascript 如何使用axios客户端重试5xx错误,javascript,node.js,typescript,axios,axios-retry,Javascript,Node.js,Typescript,Axios,Axios Retry,我正在尝试使用axios retry模块将retry添加到api调用中。为了进行测试,我正在使用mockoonmacosx客户端。我已在mockoon中设置端点,以便始终返回502响应。这样我就可以测试重试 import axios from "axios"; import axiosRetry from 'axios-retry'; async function sendRequest(method): Promise<any> { try { // return

我正在尝试使用
axios retry
模块将retry添加到api调用中。为了进行测试,我正在使用
mockoon
macosx客户端。我已在
mockoon
中设置端点,以便始终返回
502
响应。这样我就可以测试重试

import axios from "axios";
import axiosRetry from 'axios-retry';

async function sendRequest(method): Promise<any> {
  try {

    // return 502 after 100ms
    let url = `http://localhost:3000/answer`

    axiosRetry(axios, {
      retries: 3
    });


    const response = await axios[method](url);
    console.log('api call completed');
    return response;

  } catch (error) {
    console.log('api call error: ', error);
    throw error;
  }
}

(async () => {
  const response = await sendRequest('get')
})()
从“axios”导入axios;
从“axios重试”导入axiosRetry;
异步函数sendRequest(方法):Promise{
试一试{
//100毫秒后返回502
让url=`http://localhost:3000/answer`
axios重试(axios{
重试次数:3次
});
const response=wait axios[method](url);
log(“api调用完成”);
返回响应;
}捕获(错误){
log('api调用错误:',错误);
投掷误差;
}
}
(异步()=>{
const response=等待发送请求('get')
})()

这里的问题是,
axios.get
没有完成执行。因此,它不会记录
api调用错误
api调用完成
消息。非常感谢您的帮助。

axiosRetry
不适用于axios
0.19.0
(当前的axios版本):

可供替代的 使用通用异步重试功能,例如

async function retry<T>(fn: () => Promise<T>, n: number): Promise<T> {
  let lastError: any;
  for (let index = 0; index < n; index++) {
    try {
      return await fn();
    }
    catch (e) {
      lastError = e;
    }
  }
  throw lastError;
}

// use 
const response = await retry(() => axios[method](url), 3);
异步函数重试(fn:()=>Promise,n:number):Promise{ 让lastError:任何; for(设索引=0;索引axios[method](url),3); 更多
.

如何在尝试之间引入延迟。