[英]How to use axios client to retry on 5xx errors
我正在尝试使用axios-retry
模块向我的 api 调用添加重axios-retry
。 为了测试,我使用了mockoon
macosx 客户端。 我已经在mockoon
设置了端点以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.get
没有完成执行。 因此它不会记录api call error
或api call completed
消息。 任何帮助将不胜感激。
axiosRetry
不适用于 axios 0.19.0
(当前的 axios 版本): https : //github.com/softonic/axios-retry#note
使用通用异步重试功能,例如
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.