我不完全理解承诺是如何运作的。我创建了一个执行使用promise的api调用的函数。
function getSomeData(email, password) {
axios.post('SomeURL/login', {
email: email,
password: password
})
}
每当此函数触发时,我都可以获得我想要的数据。但是,每当发生错误时,错误都会显示在.then()
调用中,而不是.catch()
getSomeData().then(data => {
console.log(data)
})
我怎样才能确保,当我致电.catch()
时,它会在那里显示我的错误,而不是.then()
答案 0 :(得分:0)
你需要回复这样的承诺:
function getSomeData(email, password) {
return axios.post('SomeURL/login', {
email: email,
password: password
})
}
然后它应该正常工作(如果axios.post
调用返回promise)。
答案 1 :(得分:0)
您可以使用if语句来处理业务逻辑错误。然后catch错误将处理服务器错误。
function getSomeData(email, password) {
return axios.post('SomeURL/login', {
email: email,
password: password
})
.then(response => {
if (response.statusText === 'OK') {
// LOGIN SUCCESS
// Do something with the login result
} else {
// LOGIN FAILURE, but not server failure
// Redirect to login page, and give a message
}
})
.catch(error => {
console.log(error)
// API is down
})
}