У меня есть класс API, который использует ax ios следующим образом:
import axios, { AxiosInstance } from 'axios';
const axiosRetry = require('axios-retry');
// this line should be causing failed axios calls to retrigger but that's not happening
axiosRetry(axios, { retries: 3 });
export default class Api {
private axiosInstance: AxiosInstance;
constructor(ctx: Context) {
this.axiosInstance = axios.create({
baseURL: `www.someUrl.com`,
headers: {
'Accept': 'application/json;v=1',
'Content-Type': 'application/json;v=1',
'Authorization': 'someToken'
}
});
}
public async update(newData: any) {
try {
this.axiosInstance.patch('', newData, {
const result = await this.axiosInstance.patch('', newData, {
headers: {
'User-Id': 'myId',
'Client-Correlation-Id': 'myOtherId'
}
});
return result;
} catch (error) {
return error.response;
}
}
Я объявляю экземпляр класса следующим образом:
const api = (ctx: Context) => {
return new Api(ctx);
};
И я могу вызвать функция обновления:
const resultOfApiCall = api(ctx).update(someData)
Если по каким-либо причинам произошел сбой вызова, эта функция обновления должна перезапуститься. Если это не удается снова, он должен повторить попытку в последний раз. Это то, что axiosRetry
должен делать. Это не то, что происходит. В настоящее время, когда запрос API терпит неудачу или возвращает ошибку, ошибка просто возвращается, а patch () не запускается повторно. Почему он не запускается и как я могу сделать это заново?