vue.js - 从 vuex 存储操作中的承诺返回错误
问题描述
我正在尝试使用 Parser 设置登录操作,如果身份验证失败,它将返回错误。然后我想捕获错误并将其返回给我显示错误的组件。但是,我总是收到未处理的承诺拒绝。
我已经尝试了不同的方法来拒绝或返回错误但没有成功。reject(error) (推荐在这里Returning Promises from Vuex actions) return reject(error) return Promise.reject(error) return 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 块捕获错误。
解决方案
您必须将函数 return 包装为新的承诺。
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)
})
})
}
}
推荐阅读
- cpu-architecture - 缓存 MOSI 协议:为什么发生写未命中时块应该提供数据
- javascript - 将数据从 API 传递到另一个 API nodejs 和 vanilla Javascript
- dll - 当 RestSharp 更新到 106.10.1 时,DocuSign API 失败
- r - 无法让 R 显示回归线(geom_smooth)?
- swift - 为什么 Swift 不像 Java 或 C# 那样对属性使用 getter 和 setter?
- compilation - 什么翻译编译器和解释器代码?
- python-3.x - 在 keras model.fit 中不能有输入和输出的名称
- java - getAge() 函数不准确
- python - 无法将字符串转换为浮点数
- php - 多个条件连接