【发布时间】:2017-05-08 08:08:59
【问题描述】:
是否可以在 axios 中的 .then() 块内故意抛出错误?例如,如果 api 响应 204 状态码,我可以抛出错误并运行 catch 块吗?
例如:
axios.post('link-to-my-post-service', {
json-input
}).then(response => {
if (response.status === 200) {
//proceed...
}
else {
// throw error and go to catch block
}
}).catch(error => {
//run this code always when status!==200
});
编辑
我试过了,但是没用:
var instance = axios.create({
validateStatus: function (status)
{
return status == 200;
}
});
axios.post('link-to-my-post-service', {input: myInput}, instance)
.then(response => {
dispatch({
type: "FETCH_SUCCESS",
payload: response.data
});
}).catch(error => {
dispatch({
type: "FETCH_FAILED",
payload: error
});
});
当我得到状态码 204 时,执行的块仍然是 then() 块而不是 catch 块。
编辑 2
使用 Ilario 的建议的正确答案是这样的:
var instance = axios.create({
validateStatus: function (status)
{
return status == 200;
}
});
instance.post('link-to-my-post-service', {input: myInput})
.then(response => {
dispatch({
type: "FETCH_SUCCESS",
payload: response.data
});
}).catch(error => {
dispatch({
type: "FETCH_FAILED",
payload: error
});
});
现在当状态码不等于 200 时,会执行 catch 块代码。
【问题讨论】:
-
很高兴它现在可以工作了!!
标签: javascript axios