1) Я не вижу, чтобы вы устанавливали timeout
на 3 секунды где-либо в вашем коде.
2) По умолчанию axios-retry
интерпретирует время ожидания запроса как глобальное значение, так что если вам нужно время ожидания истекает через 3 секунды при каждой повторной попытке, установите shouldResetTimeout: true
.
3) По умолчанию axios-retry
не повторяет запросы с тайм-аутом (т.е. те, которые имеют код ECONNABORTED
) и неидемпотентные запросы, такие как POST
. Установите пользовательский retryCondition
, чтобы изменить это.
С учетом вышеуказанных пунктов, что-то вроде этого должно работать:
const axios = require('axios').default;
const axiosRetry = require('axios-retry');
axiosRetry(axios, {
retries: 3,
shouldResetTimeout: true,
retryCondition: (_error) => true // retry no matter what
});
axios.post(url, payload, {headers: header, timeout: 3000})
.then((res) => {
console.log('Response is *****', res);
})
.catch((err) => {
console.log('Error occurred' + err);
});
Кроме того, обязательно используйте axios@0.19.1
или выше.