Javascript 使用try-and-catch语句处理异步http错误
我希望这是一个简单的问题: 我正在尝试在ReactJS action creator中的try-and-catch语句中实现错误处理Javascript 使用try-and-catch语句处理异步http错误,javascript,reactjs,Javascript,Reactjs,我希望这是一个简单的问题: 我正在尝试在ReactJS action creator中的try-and-catch语句中实现错误处理 export const getUserKitchens = () => async dispatch => { try{ const response = await axios.get( `${baseURL}customer/get-user-kitchens/`, )
export const getUserKitchens = () => async dispatch => {
try{
const response = await axios.get(
`${baseURL}customer/get-user-kitchens/`,
)
dispatch({type:LOAD_USER_KITCHENS, payload: response.data})
} catch(e) {
const msg = "something"
dispatch(displayStatus(msg, true))
}
}
如果请求失败,HTTP状态为401,我想注销该用户。因此,我需要从catch语句中访问Http响应头并从中检索Http状态
这可能吗?根据
wait表达式导致异步函数执行暂停,直到
承诺已解决,即履行或拒绝,并恢复
完成后执行异步函数。会议恢复后
等待表达的价值是履行承诺的价值
如果承诺被拒绝,wait表达式将抛出拒绝的承诺
价值观
因此,如果存在API错误,将抛出错误对象,该对象位于catch
块中,可以使用error.response.status
和error.response.headers
export const getUserKitchens = () => async dispatch => {
try{
const response = await axios.get(
`${baseURL}customer/get-user-kitchens/`,
)
dispatch({type:LOAD_USER_KITCHENS, payload: response.data})
} catch(e) {
const status = e.response.status;
dispatch(displayStatus(status, true))
}
}
catch
语句中的e
对象是错误对象。您可以访问带有error.response.status
的状态代码和带有error.response.headers
的标题。类似这样的东西应该很有用:
export const getUserKitchens = () => async dispatch => {
try{
const response = await axios.get(
`${baseURL}customer/get-user-kitchens/`,
)
dispatch({type:LOAD_USER_KITCHENS, payload: response.data})
} catch(e) {
const status = e.response.status;
if (status === 401) {
dispatch({type:LOG_USER_OUT}) //LOG_USER_OUT is a logout action
} else {
dispatch(displayStatus(status, true))
}
}
}
catch语句中的
e
对象是错误对象。您可以访问带有error.response.status
的状态代码和带有error.response.headers
的标题。这是您要求的吗?还是您要求在axios
对象上进行全局配置?如果有任何响应是401
code,您将在该对象上注销?太好了!不,那正是我要找的!好的,在问题中添加了。如果它符合您的要求,请接受它。:-)