Saltar al contenido

La función de tiempo de espera en la biblioteca axios no funciona

Te traemos el resultado a este dilema, al menos eso pensamos. Si tienes dudas puedes dejarlo en el apartado de comentarios y con placer te responderemos

Solución:

De este número de axios (Gracias a zhuyifan2013 por dar la solución), he encontrado que axiostimeout es tiempo de espera de respuesta no el tiempo de conexión expiro.

Digamos que ha solicitado la URL a través de axios y el servidor está tardando mucho en responder, en este caso el axios el tiempo de espera funcionará.

Pero no tiene conexión a Internet o la dirección IP o el nombre de dominio que está solicitando no está allí, en este caso axios el tiempo de espera no funcionará.

Tienes que usar el siguiente código

  let source = CancelToken.source();
  setTimeout(() => 
    source.cancel();
    // Timeout Logic
  , 10000);

  axios.get(ip + '/config', cancelToken: source.token).then((result) => 
    // Handle your response
  );

Tenga en cuenta que si tiene una conexión válida, todavía el Lógica de tiempo de espera el bloque se ejecutará.

Debe crear una instancia del cliente http axios:

const httpClient = axios.create();
httpClient.defaults.timeout = 500;

A continuación, puede utilizar el httpClient de la siguiente manera:

return httpClient.post(`$ROOT_URL/login/$role`, creds)
  .then(handleResponse)

En una nota al margen, también puede configurar la URL base en la misma configuración en lugar de usar $ROOT_URL:

httpClient.defaults.baseURL = ROOT_URL

Este código funciona para mí:

axios(
  method: "post",
  url: 'http://example.com/api',
  timeout: 1000 * 5, // Wait for 5 seconds
  headers: 
    "Content-Type": "application/json"
  ,
  data: 
    id: 1234
  
)
  .then(response => 
    const serverResponse = response.data;
    // do sth ...
  )
  .catch(error => 
    console.log(error);
);

Si el servidor no responde en 5 segundos, entra en bloqueo catch.

Esto también es útil: #1503

Valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *