我有一个authService,具有以下提取
export const handleForm = () => {
return fetch('http://localhost:5000/login')
.then(response => {
if (!response.ok) {
throw new Error("Email or password incorrect");
} else {
return response.json();
}
})
.then(json => json)
.catch(error => error);
};
我正在从控制器中调用该方法:
form.onsubmit = function (e) {
handleForm(e)
.then(response => {
console.log(response);
//setAuthenticatedUser(response);
// setDomUser(response.user);
})
.catch(error => {
console.log(error);
document.querySelector('#error').innerHTML = error;
})
};
我已经尝试了一些方法来在控制器中捕获错误 但是我一直在触发响应回调。 未捕获到我的authService中的错误
答案 0 :(得分:3)
语法部分
p.catch(onRejected);
[...]
如果
catch()
抛出错误或返回本身被拒绝的Promise,则onRejected
返回的Promise将被拒绝;否则,它将解决。
使用.catch(error => error)
作为回调返回异常。因此,它既不会“抛出错误”,也不会“返回本身被拒绝的承诺”。这样,它所返回的承诺就得到了解决,而不是被拒绝。
只需删除.catch(error => error)
即可使用。而且当您使用它时,也请删除.then(json => json)
,因为它没有用。