从 vuex 存储操作中的承诺返回错误
Posted
技术标签:
【中文标题】从 vuex 存储操作中的承诺返回错误【英文标题】:Returning error from promise in vuex store action 【发布时间】:2019-06-20 02:04:53 【问题描述】:我正在尝试使用 Parser 设置登录操作,如果身份验证失败,它将返回错误。然后我想捕获错误并将其返回给我显示错误的组件。但是,我总是收到未处理的承诺拒绝。
我已经尝试了不同的方法来拒绝或返回错误但没有成功。 拒绝(错误)(这里推荐Returning Promises from Vuex actions) 返回拒绝(错误) 返回 Promise.reject(错误) 返回 Promise.reject(新的错误(错误)) 或者干脆 返回错误
我的行动:
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 块捕获错误。
【问题讨论】:
【参考方案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)
)
)
【讨论】:
这是多余的return Parse.User
是一样的以上是关于从 vuex 存储操作中的承诺返回错误的主要内容,如果未能解决你的问题,请参考以下文章