programing

axios 시간 초과 후 알림 받기

padding 2023. 6. 27. 21:50
반응형

axios 시간 초과 후 알림 받기

저는 액시오스를 이용한 API 호출이 있습니다.타임아웃은 2500밀리초로 설정됩니다.내가 원하는 것은 xios가 시간 초과 후 값을 반환하여 사용자에게 요청이 일부 서버 또는 네트워크 오류로 인해 중단되었음을 알릴 수 있도록 하는 것입니다.

시간 초과 초기화 방법

const instance = axios.create();
instance.defaults.timeout = 2500;

다음은 시간 초과 후 값을 반환해야 하는 함수입니다.

_post(url, body, token) {
        return new Promise((resolve, reject) => {
            instance
                .post(url, body, {headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                    }})
                .then(data => {
                    resolve(data);
                })
                .catch(error => {
                    reject(error);
                });
        });
    }

감사해요!

Axios 오류는 속성으로 식별됩니다.

시간 초과에 대비한 코드입니다.

위의 코드는 약속 구축 반대 패턴을 사용합니다.이미 약속이 있으므로 새 약속을 만들 필요가 없습니다.

_post(url, body, token) {
    return instance
        .post(url, body, {headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            }})
        .catch(error => {
            if (error.code === 'ECONNABORTED')
                return 'timeout';
            else
                throw error;
        });
}

저는 이것이 오래된 게시물이라는 것을 알지만, 저도 같은 문제가 있었고 다음은 다른 사람들에게 도움이 될 수 있습니다.

위의 코드펜 예제를 실행할 수 없습니다.

내 경우에는 인스턴스가 아닌 axios 클래스에 시간 초과를 설정했습니다.

axios.defaults.timeout = 30000
axios.defaults.timeoutErrorMessage='timeout'

오류가 발생하지 않은 이유는 아마도 더 높은 수준에서 호출되는 오류 처리기에서 여전히 e.response.data를 보고 있었기 때문일 것입니다.오류 개체인 e.response.data는 시간 초과의 경우 존재하지 않으므로 이에 액세스하면 오류 처리기에 오류가 발생합니다. 적어도 저의 경우는 그렇게 되었습니다.

위의 내용을 사용하여 다음 항목(예: 오류 == '오류')을 확인한 다음 특수 오류 메시지를 표시할 수 있습니다.

언급URL : https://stackoverflow.com/questions/50619928/get-notified-after-axios-timeout

반응형