我正在尝试使用Parser设置登录操作,如果身份验证失败,该操作将返回错误。然后,我想捕获错误并将其返回到显示错误的组件。但是我总是会遇到无法兑现的诺言。
我已经尝试了不同的拒绝或返回错误的方法,但均未成功。 拒绝(错误)(在此推荐Returning Promises from Vuex actions) 返回拒绝(错误) 返回Promise.reject(错误) 返回Promise.reject(new Error(error)) 或简单地 返回错误
我的动作:
actions: {
login(vuexContext, authData) {
console.log(authData.email)
Parse.User.logIn(authData.email, authData.password)
.then(user => {
vuexContext.commit('SET_USER', user)
})
.catch(error => {
console.error('Actions login - Error: ' + error)
reject(error)
})
}
我的提交方法:
onSubmit() {
this.$store
.dispatch('login', {
email: this.formData.email,
password: this.formData.password
})
.then(() => {
// ..
})
.catch(error => {
console.log('Catching' + error)
if (error.code == 101) {
this.errorMsg = 'Email oder Passwort falsch'
} else {
this.errorMsg =
'Entschuldigung, hier ist etwas schief gelaufen... Fehler: ' +
error.message
}
this.showError = true
this.$router.push('/sessions/new')
})
}
我希望onSubmit方法中的catch块能够捕获错误。
答案 0 :(得分:1)
您必须将函数return包装为新的promise。
actions: {
login(vuexContext, authData) {
return new Promise((resolve, reject) => {
console.log(authData.email)
Parse.User.logIn(authData.email, authData.password)
.then(user => {
vuexContext.commit('SET_USER', user)
resolve()
})
.catch(error => {
console.error('Actions login - Error: ' + error)
reject(error)
})
})
}
}