Timeout-Funktion in den axios-Bibliothek funktioniert nicht
Habe ich axios.defaults.timeout = 1000;
Hörte ich die server, die mich mit den APIs.
Aber es braucht mehr als 1s timeout nach dem senden einer Anfrage.
Dies ist, wie meine Anfrage:
import axios from 'axios';
axios.defaults.timeout = 1000;
return axios.post(`${ROOT_URL}/login/${role}`, creds).then((response) => {
console.log(response);
if(response.status === 200) {
//If login was successful, set the token in local storage
localStorage.setItem(`${role}_log_toks`, JSON.stringify(response.data));
//Dispatch the success action
dispatch(receiveLogin(response.data));
return response;
}
}).catch(err => {
console.log(err);
//If there was a problem, we want to
//dispatch the error condition
if(err.data && err.status === 404) {
dispatch(loginError(err.data));
} else {
dispatch(loginError('Please check your network connection and try again.'));
}
return err;
});
Habe ich auch schon versucht:
return axios.post(`${ROOT_URL}/login/${role}`, creds, {timeout: 1000}).then...
Axios nicht aufhören zu Holen und nach 5 - 10 Minuten schließlich zeigt Netzwerk-Fehler. Ich verstehe, dass es andere Techniken zu behandeln timeout, aber warum nicht die timeout-Funktion in der axios Arbeit? Was könnte der Grund sein, dass axios nicht aufhören zu Holen?
EDIT:
Wie bereits erwähnt in den Kommentaren, habe ich auch schon versucht:
import axios from 'axios';
const httpClient = axios.create();
httpClient.defaults.timeout = 500;
return httpClient.post(`${ROOT_URL}/login/${role}`, creds)
.then(handleResponse)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erstellen eine Instanz des axios http-client:
Dann können Sie die httpClient wie folgt:
On a side note können Sie auch die Basis-url in der gleichen config statt mit
${ROOT_URL}
:${ROOT_URL}/login/${role}
, creds) 2. Versucht dies auch. Hat nicht funktioniert. 3. Derzeit bin ich durch eine Technik, genannt von mislav hier: github.com/github/fetch/issues/175 Funktioniert wie ein Charme, aber ich wollte das timeout zur Verfügung gestellt von axios zu arbeiten.axios
verwenden Sie? Können Sie Ihrerequire
/import
Aussagen und axios Initialisierung code oben?Dieser code funktioniert bei mir:
Wenn der server reagiert nicht in 5 Sekunden geht es in catch-block.
Dies ist auch sinnvoll: #1503
Aus diesem axios Problem (Dank zhuyifan2013 für die Angabe der Lösung), habe ich gefunden, dass axios
timeout
ist response timeout nicht connection timeout.Lassen Sie sagen, Sie haben angefordert die URL, über axios und server dauert lange Zeit, um zu reagieren, in diesem Fall die axios timeout arbeiten.
Aber Sie nicht internet-Verbindung haben oder die IP-Adresse oder den Domänennamen aus, den Sie anfordern, nicht da, in diesem Fall axios timeout wird nicht funktionieren.
Hast du den folgenden code verwenden
Bitte beachten Sie, dass wenn Sie schon gültig Verbindung, noch die Timeout-Logik block wird ausgeführt.