如何检查axios通话是否因无网络而失败?

Kev*_*Lee 7 networking reactjs server react-native axios

我正在尝试找出一种准确的方法来检测由于没有互联网连接而导致的 axios 呼叫失败。

axios 调用失败是否返回特定的响应对象或特定的响应状态代码或针对无互联网连接场景抛出特定的错误详细信息?

我将使用“检测由于没有互联网连接而导致的 axios 故障”的示例

try {
    const res = await server.get('/auth/user?', {
            params: {
                refreshToken: refreshToken,            
                userID: userID
            }
        }
    );

    if(res.user.data){
        dispatch({type: LOGIN_USER_SUCCESS, payload: res.data.user});
    } else {
        if(res.axiosFailsDueToNoInternetConnection){
            alert('no internet connection');
            dispatch({type: RELOAD});
        }
    }

} catch (error) {
    if(error.dueToNoInternetConnection){
        alert('no internet connection');
        dispatch({type: RELOAD});
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 10

在 catch 子句中,您可以检查错误是否是由网络错误引起的:

catch (error) {
    if(error.toJSON().message === 'Network Error'){
        alert('no internet connection');
        dispatch({type: RELOAD});
    }
}
Run Code Online (Sandbox Code Playgroud)