Чтобы обрабатывать ошибки тайм-аута с помощью Axios, вы можете использовать один или несколько из следующих методов:
-
Использование параметра конфигурации
timeout:axios({ url: 'https://example.com/api', method: 'GET', timeout: 5000 // Timeout in milliseconds }) .then(response => { // Handle successful response }) .catch(error => { if (error.code === 'ECONNABORTED') { // Handle timeout error } else { // Handle other errors } });В приведенном выше примере для параметра
timeoutустановлено значение 5000 миллисекунд (5 секунд). Если запрос занимает больше времени, чем указанный тайм-аут, будет выдана ошибка с кодом'ECONNABORTED'. -
Использование токена отмены:
const CancelToken = axios.CancelToken; const source = CancelToken.source(); axios({ url: 'https://example.com/api', method: 'GET', cancelToken: source.token }) .then(response => { // Handle successful response }) .catch(error => { if (axios.isCancel(error)) { // Handle cancellation } else { // Handle other errors } }); // Cancel the request after a specified time setTimeout(() => { source.cancel('Request timed out'); }, 5000); // Timeout in millisecondsВ этом примере токен отмены создается с помощью
CancelToken.source(). Токен передается как опцияcancelTokenв запросе Axios. По истечении указанного времени (в данном случае 5 секунд) запрос отменяется вызовомsource.cancel(). -
Использование Promise.race с таймаутом:
const timeout = 5000; // Timeout in milliseconds Promise.race([ axios.get('https://example.com/api'), new Promise((_, reject) => setTimeout(() => reject(new Error('Request timed out')), timeout)) ]) .then(response => { // Handle successful response }) .catch(error => { // Handle timeout and other errors });В этом подходе
Promise.race()используется для гонки между запросом Axios и обещанием, которое отклоняется после указанного таймаута. Какое бы обещание ни было разрешено или отклонено первым, оно будет использоваться для обработки ответа или ошибки.