我使用fetch将数据发布到服务器:
fetch(url, {
method: 'post'
})
.then(status)
.then((data) => {
console.log(data);
}).catch((error) => {
console.log('error: ' + error);
});
});
这是状态方法
const status = (res) => {
console.log(res);
if(res.status >= 200 && res.status < 300) {
return Promise.resolve(res.json());
} else {
return Promise.reject(res.json());
}
}
如果代码是200,那么它工作正常(我收到我的JSON)。但如果不是,我会抓住错误并记录下来。它显示未经授权但我希望我收到我的错误JSON。像这样的东西
{
"status": 400,
"error": "pass is not corret"
}
如何捕获我的Json错误?
答案 0 :(得分:0)
此时我认为你只需要从响应中返回JSON。无论你是否都在返回JSON,你的条件判断?:
const status = (res) => {
console.log(res);
if (res.status >= 200 && res.status < 300) {
return res.json();
}
}
答案 1 :(得分:0)
res.json()
返回Promise
。当你致电Promise.reject
时,你只能通过拒绝理由。就像字符串,对象或错误一样,描述了你拒绝的原因。
我会将代码更改为
const status = (res) => {
return new Promise((resolve, reject) => {
res.json().then((json) => {
if(res.status >= 200 && res.status < 300) {
resolve(json);
}
else {
reject(json)
}
});
});
}
来源: