Mam ustawiony axios.defaults.timeout = 1000;
funkcja Timeout w bibliotece Axios nie działa
zatrzymałem serwer, który zapewnia mi API.
Jednak upłynięcie limitu czasu po wysłaniu żądania trwa dłużej niż 1s.
To jak wygląda moja prośba:
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;
});
Próbowałem również:
return axios.post(`${ROOT_URL}/login/${role}`, creds, {timeout: 1000}).then...
Axios nie kończy pobierania i po 5 - 10 minutach wreszcie pokazuje błąd sieciowy. Rozumiem, że istnieją inne techniki radzenia sobie z limitem czasu, ale dlaczego funkcja timeout w aksjomatach nie działa? Jaki może być powód, dla którego aksios nie przestaje przyciągać?
EDIT: Jak wspomniano w komentarzach, próbowałem też:
import axios from 'axios';
const httpClient = axios.create();
httpClient.defaults.timeout = 500;
return httpClient.post(`${ROOT_URL}/login/${role}`, creds)
.then(handleResponse)
1. Myślę, że chcesz powrotu httpClient.post ('$ {root_url}/login/$ {rola} ', creds) 2. Wypróbowałem to również. Nie działa. 3. Obecnie używam techniki wspomnianej przez mislav tutaj: https://github.com/github/fetch/issues/175 Działa jak urok, ale chciałem, aby czas oczekiwania dostarczony przez Axios do pracy. –
Nie jestem pewien, dlaczego to nie działa. Jakiej wersji "axios" używasz? Czy możesz zawrzeć w swoim kodzie instrukcje 'require' /' import' i kod inicjujący axios? – Clarkie
Dodałem twoje sugestie. –