Получать уведомления по истечении времени ожидания Axios - PullRequest
0 голосов
/ 31 мая 2018

У меня есть вызов API с использованием axios.Тайм-аут установлен на 2500 миллис.Мне не хотелось бы, чтобы axios возвращал значение по истечении времени ожидания, чтобы я мог уведомить пользователя о том, что запрос прерван из-за какой-либо ошибки сервера или сети.

Как я инициализировал время ожидания

const instance = axios.create();
instance.defaults.timeout = 2500;

Ниже приведена функция, которая должна возвращать значение по истечении времени ожидания

_post(url, body, token) {
        return new Promise((resolve, reject) => {
            instance
                .post(url, body, {headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    }})
                .then(data => {
                    resolve(data);
                })
                .catch(error => {
                    reject(error);
                });
        });
    }

Спасибо!

1 Ответ

0 голосов
/ 31 мая 2018

Ошибки Axios обозначаются code свойством .

Это ECONNABORTED код в случае тайм-аута.

КодВышеуказанное использует обещание строительства антипаттерна.Уже есть обещание, создавать новое не нужно:

_post(url, body, token) {
    return instance
        .post(url, body, {headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            }})
        .catch(error => {
            if (error.code === 'ECONNABORTED')
                return 'timeout';
            else
                throw error;
        });
}
...