Обработка ошибок тайм-аута в Axios: методы и примеры кода

Чтобы обрабатывать ошибки тайм-аута с помощью Axios, вы можете использовать один или несколько из следующих методов:

  1. Использование параметра конфигурации 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'.

  2. Использование токена отмены:

    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().

  3. Использование 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 и обещанием, которое отклоняется после указанного таймаута. Какое бы обещание ни было разрешено или отклонено первым, оно будет использоваться для обработки ответа или ошибки.