как прикрепить топор ios -повторный к AxiosInstance? - PullRequest
0 голосов
/ 13 января 2020

У меня есть класс 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 () не запускается повторно. Почему он не запускается и как я могу сделать это заново?

...